Controles de Acceso a Datos
La pestania Acceso a Datos proporciona 9 componentes de base de datos para conectarse a bases de datos locales y remotas. Todos los componentes comparten una interfaz comun para gestion de conexiones y ejecucion de consultas.
Propiedades Comunes
Todos los componentes de base de datos (excepto TDBFTable) comparten estas propiedades de conexion:
| Propiedad | Tipo | Valor predet. | Descripcion |
|---|---|---|---|
cHost | String | "localhost" | Nombre de host o direccion IP del servidor de base de datos |
nPort | Numerico | varia | Puerto del servidor (predeterminado especifico del controlador) |
cDatabase | String | "" | Nombre de la base de datos |
cUser | String | "" | Nombre de usuario de autenticacion |
cPassword | String | "" | Contrasena de autenticacion |
lConnected | Logico | .F. | Estado actual de la conexion (solo lectura) |
lAutoConnect | Logico | .F. | Conectar automaticamente cuando se activa el formulario |
cCharset | String | "UTF8" | Juego de caracteres para la conexion |
Eventos Comunes
| Evento | Categoria | Descripcion |
|---|---|---|
OnConnect | Conexion | Conectado exitosamente a la base de datos |
OnDisconnect | Conexion | Desconectado de la base de datos |
OnError | Error | Error de conexion o consulta. Parametros: nCode, cMessage |
OnBeforeQuery | Consulta | Se dispara antes de ejecutar una consulta. Parametros: cSQL. Devuelva .F. para cancelar |
OnAfterQuery | Consulta | Se dispara despues de que una consulta se completa. Parametros: oResultSet, nRows |
Metodos Comunes
| Metodo | Descripcion |
|---|---|
Connect() | Abrir una conexion al servidor de base de datos |
Disconnect() | Cerrar la conexion |
Execute( cSQL ) | Ejecutar una sentencia SQL (INSERT, UPDATE, DELETE). Devuelve nAffectedRows |
Query( cSQL ) | Ejecutar una consulta SELECT. Devuelve un objeto oResultSet |
BeginTrans() | Iniciar una transaccion |
Commit() | Confirmar la transaccion actual |
Rollback() | Revertir la transaccion actual |
TDBFTable CT_DBFTABLE = 53
Acceso nativo a tablas xBase DBF. Proporciona acceso directo a archivos DBF/NTX/CDX sin servidor. El formato de datos clasico de Harbour/Clipper.
| Propiedad | Tipo | Valor predet. | Descripcion |
|---|---|---|---|
cFile | String | "" | Ruta al archivo .dbf |
cAlias | String | "" | Nombre del alias del area de trabajo |
lShared | Logico | .T. | Abrir en modo compartido (multiusuario) |
lReadOnly | Logico | .F. | Abrir como solo lectura |
cDriver | String | "DBFCDX" | Controlador RDD (DBFCDX, DBFNTX, DBFNSX) |
TSQLite CT_SQLITE = 54
Base de datos embebida SQLite. Motor de base de datos sin configuracion, sin servidor, de archivo unico.
| Propiedad | Tipo | Valor predet. | Descripcion |
|---|---|---|---|
cFile | String | "" | Ruta al archivo .db o .sqlite |
lInMemory | Logico | .F. | Usar una base de datos en memoria (sin archivo) |
lWAL | Logico | .T. | Habilitar Write-Ahead Logging para mejor concurrencia |
lForeignKeys | Logico | .T. | Habilitar aplicacion de restricciones de claves foraneas |
TMySQL CT_MYSQL = 55
Conector cliente MySQL / MariaDB. Puerto predeterminado: 3306.
| Propiedad | Tipo | Valor predet. | Descripcion |
|---|---|---|---|
nPort | Numerico | 3306 | Puerto del servidor |
lSSL | Logico | .F. | Usar conexion SSL/TLS |
lCompress | Logico | .F. | Habilitar compresion de protocolo |
TPostgreSQL CT_POSTGRESQL = 56
Conector cliente PostgreSQL. Puerto predeterminado: 5432.
| Propiedad | Tipo | Valor predet. | Descripcion |
|---|---|---|---|
nPort | Numerico | 5432 | Puerto del servidor |
cSchema | String | "public" | Esquema predeterminado |
lSSL | Logico | .F. | Usar conexion SSL/TLS |
TFirebird CT_FIREBIRD = 57
Conector cliente Firebird SQL. Puerto predeterminado: 3050.
| Propiedad | Tipo | Valor predet. | Descripcion |
|---|---|---|---|
nPort | Numerico | 3050 | Puerto del servidor |
cRole | String | "" | Nombre del rol SQL |
nDialect | Numerico | 3 | Dialecto SQL (1 o 3) |
TSQLServer CT_SQLSERVER = 58
Conector cliente Microsoft SQL Server. Puerto predeterminado: 1433.
| Propiedad | Tipo | Valor predet. | Descripcion |
|---|---|---|---|
nPort | Numerico | 1433 | Puerto del servidor |
lTrustedAuth | Logico | .F. | Usar autenticacion integrada de Windows |
cAppName | String | "" | Nombre de la aplicacion para monitoreo del servidor |
TOracle CT_ORACLE = 59
Conector cliente Oracle Database. Puerto predeterminado: 1521.
| Propiedad | Tipo | Valor predet. | Descripcion |
|---|---|---|---|
nPort | Numerico | 1521 | Puerto del servidor |
cServiceName | String | "" | Nombre del servicio Oracle (alternativa a cDatabase) |
cSchema | String | "" | Esquema predeterminado |
TMariaDB CT_MARIADB = 60
Conector cliente MariaDB. Puerto predeterminado: 3306.
| Propiedad | Tipo | Valor predet. | Descripcion |
|---|---|---|---|
nPort | Numerico | 3306 | Puerto del servidor |
lSSL | Logico | .F. | Usar conexion SSL/TLS |
TMongoDB CT_MONGODB = 61
Conector cliente MongoDB. Base de datos NoSQL orientada a documentos. Puerto predeterminado: 27017.
| Propiedad | Tipo | Valor predet. | Descripcion |
|---|---|---|---|
nPort | Numerico | 27017 | Puerto del servidor |
cCollection | String | "" | Coleccion predeterminada |
Ejemplo de Codigo: Base de Datos SQLite
// Conectar a una base de datos SQLite y consultar datos FUNCTION Main() LOCAL oDB, oRS // Crear y configurar la conexion SQLite oDB := TSQLite():New() oDB:cFile := "miapp.db" oDB:lWAL := .T. oDB:OnError := { |n, c| QOut( "Error BD: " + c ) } // Conectar y crear una tabla oDB:Connect() oDB:Execute( "CREATE TABLE IF NOT EXISTS clientes (" + ; " id INTEGER PRIMARY KEY AUTOINCREMENT," + ; " name TEXT NOT NULL," + ; " email TEXT," + ; " city TEXT )" ) // Insertar registros oDB:Execute( "INSERT INTO clientes (name, email, city) VALUES ('John', 'john@test.com', 'NYC')" ) oDB:Execute( "INSERT INTO clientes (name, email, city) VALUES ('Maria', 'maria@test.com', 'Madrid')" ) // Consultar datos oRS := oDB:Query( "SELECT * FROM clientes ORDER BY name" ) DO WHILE ! oRS:Eof() QOut( oRS:FieldGet( "name" ), oRS:FieldGet( "email" ) ) oRS:MoveNext() ENDDO oRS:Close() oDB:Disconnect() RETURN NIL
Todos los componentes basados en SQL comparten la misma interfaz Query/Execute. Cambie de base de datos simplemente cambiando la clase del componente; el codigo de su aplicacion permanece igual. TDBFTable usa el modelo de navegacion xBase clasico.