DBConnect
DBConnect es un módulo del paquete StdLib que facilita el uso de las conexiones a bases de datos con TOL.
Para la gestión de las conexiones, DBConnect utiliza nameblocks (instancias de la clase @DBConnection), creándose uno para cada conexión.
Creación de una conexión
Para la creación de una conexión con una base de datos hemos de conocer una determinada información de dicha base de datos, a saber:
- El tipo o gestor de base de datos. Éste nos servirá para crear un ODBC (si no está ya creado) o para hacer uso de las conexiones nativas, si se encuentra entre los gestores soportados por TOL. Entre los más habituales encontramos: "mysql", "postreSQL", "oracle", "sqlserver", etc.
- El servidor (server) donde se encuentra alojada la base de datos. Se trata de la dirección de la máquina a la que nos conectamos. Habitualmente se trata de su nombre seguido del dominio, por ejemplo: "servidor.midominio.es".
- También debemos conocer el puerto (port) del servidor si éste no usa el puerto por defecto. Por ejemplo, en el caso del gestor PostgreSQL este puerto por defecto es el "5432".
- El nombre de la base de datos (defaultDB) a la que queremos conectarnos. Frecuentemente este nombre está relacionado con el del proyecto con el que está asociada.
- El nombre de usuario (user) y contraseña (password) con el que podemos acceder a la base de datos.
Conexión vía ODBC
La forma más utilizada en TOL de conectar con una base de datos es a través de un ODBC.
El ODBC es un estándar de acceso a las bases de datos, y su creación y configuración depende del sistema operativo que estemos utilizando.
Por ejemplo, en Windows debemos dirigirnos al "Administrador de orígenes de datos ODBC" (odbcad32.exe) y crear allí el ODBC siguiendo al asistente del driver del gestor de base de datos que corresponda.
Al crear un ODBC tendremos que elegir un nombre (alias) para el ODBC. Se aconseja asignarle un nombre fácil de recordar y relacionado con la base de datos que vamos a usar, el tipo de gestor o el usuario o una combinación de ellos. Téngase en cuenta que éste será también el nombre que utilizaremos para la conexión en TOL.
Una vez creado el ODBC podemos crear la conexión en TOL mediante la expresión:
NameBlock db = DBConnect::Create(<alias>, <user>, <password>, "odbc", <defaultDB>, <server>, <purpose>);
en la cual introduciremos la información correspondiente a nuestra base de datos y su ODBC. El último argumento nos permite añadir un propósito (purpose) de la conexión con fines meramente descriptivos.
Conexión nativa
Para crear una conexión nativa (sin usar un ODBC) con TOL utilizaremos la expresión:
NameBlock db = DBConnect::Create(<alias>, <user>, <password>, <driver>, <defaultDB>, <server>, <purpose>);
indicando como cuarto argumento (driver) el nombre del gestor de base de datos que se desea utilizar.
Actualmente TOL admite conexiones nativas con PostgreSQL (driver="pgsql") y con MySQL (driver="mysql").
Al crear conexiones nativas, podemos indicar un puerto distinto al predeterminado si utilizamos la variante Create_WithPort
:
NameBlock db = DBConnect::Create_WithPort(<alias>, <user>, <password>, <driver>, <defaultDB>, <server>, <port>, <purpose>);
Almacenar y recuperar una conexión
Para facilitar el uso de las conexiones creadas, TOL permite almacenarlas y recuperarlas y utilizarlas en una sesión de TOL diferente.
Almacenar una conexión
Para almacenar una conexión simplemente debemos ejecutar su método Store
:
Real <dbConnection>::Store(?);
Este método crea un archivo con el nombre <alias>.dbc que contiene la información de la conexión embebida.
El archivo se ubica en el directorio de datos de programa de TOL.
Concretemente en la carpeta "DBConnect" (Text TolAppDataPath<<"DBConnect/"
).
Recuperar una conexión
Si queremos volver a obtener una referencia a la conexión dentro de la misma sesión TOL en que fue creada (por ejemplo, por que decompilamos la que teníamos) basta con hacer:
NameBlock db = DBConnect::GetConnection(<alias>);
Si en lugarde esto, intentamos volvemos a crear la conexión, obtendremos un mensaje que nos avisa de que la conexión ya estaba creada y se nos devolverá la conexión que ya existía.
Para recuperar una conexión ya almacenada en una nueva sesión de TOL, usaremos el método constructor New
indicando como argumento sólo el alias de la conexión:
NameBlock db = DBConnect::New([[ Text alias = <alias> ]]);
Utilizar una conexión
Para utilizar una conexión, disponemos de los siguientes métodos:
Real <dbConnection>::Open(?)
: Abre la conexión con la base de datos.
Real <dbConnection>::Close(?)
: Cierra la conexión con la base de datos.
Real <dbConnection>::IsOpened(?)
: Nos permite determinar si la conexión con la base de datos está abierta o no.
Real <dbConnection>::Activate(?)
: Activa una conexión para su uso con las funcionesDBTable
,DBExecQuery
, etc. Este método nos permite alternar entre diferentes conexiones.
Real <dbConnection>::IsActive(?)
: Nos permite determinar si la conexión es la conexión activa.