Como casi todo en programación, hay varias formas de hacer una misma
tarea y ésta no es la excepción. Crearemos una base de datos y una
tabla. También le agregaremos un registro a la tabla, todo con código
Free Pascal desde Lazarus y utilizando un solo componente de Zeos Lib
que no facilita las tareas con las bases de datos.
Ya he escrito que para crear una base de datos en SQLite solo hay que establecer la conexión, si la base de datos no existe, entonces SQLite la crea.
Solo necesitamos un TZConnection que lo soltaremos en el Form o en el Data Module.
Nota: al ZConnection1 en la propiedad protocol desde el inspector de objetos le seleccionamos sqlite3.
Este ejemplo consiste en una función que crea una base de datos, una
tabla y un registro en la misma. Si todo salió bien se devuelve True,
caso contrario, False.
function CrearEmpresas: Boolean;
var
ret:Boolean;
begin
ret:=True;
if not FileExists('/home/programa1/empresas.db') then
begin
if ZConnection1.Connected then ZConnection1.Disconnect;
try
ZConnection1.Database:='/home/programa1/empresas.db';
ZConnection1.Connect;
ZConnection1.ExecuteDirect('CREATE TABLE IF NOT EXISTS empre ( '+
'idempre INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL, '+
'nombre VARCHAR (40) NOT NULL, '+
'cuit VARCHAR (13) NOT NULL, '+
'db VARCHAR (40) NOT NULL, '+
'dir VARCHAR (80) NOT NULL );');
ZConnection1.ExecuteDirect('INSERT INTO empre VALUES '+
'(1,''DEMO EMPRESA S.A.'',''20-12345678-9'',''demodb.db'','+''''+CurrentDirectory+''');');
ZConnection1.Disconnect;
Except
ret:=False;
end;
ZConnection1.Disconnect;
end;
CrearEmpresas:=ret;
end;
Para evitar errores, primero verificamos que el archivo no exista y
luego también chequeamos que ZConnection1 no esté conectado, pues si lo
está no nos sirve, dado que para estar conectado lo está a una base de
datos, y necesitamos crear la base de datos lo cual sucede al momento de
efectuar la conexión. Por eso, si Connected devuelve True, lo
desconectamos. Lo que sigue lo “envolvemos” en un try / Except y si
salta algún error la función retornará False.
Ya asegurándonos de que ZConnection1 está desconectado, le establecemos
la base de datos con path completo aunque sin path creará la DB en el
directorio de ejecución, por lo tanto puede obviarse el path y poner
‘empresas.db’ por ejemplo. Conectamos y en ese momento es cuando la DB
es creada. Acto seguido, valiéndonos del método ExecuteDirect
incluiremos el mismo código que escribiríamos en una terminal o consola
para SQLite con la diferencia de que necesitamos el uso de comillas
dobles en la inserción de datos. Con el primer ExecuteDirect creamos la
tabla empresas.db si no existe, algo que sobra porque acabamos de crear
la DB. Con el segundo, agregamos un registro, ahora llamado fila, lo
cual es correcto pero no me gusta. Y ahí debemos utilizar las comillas
dobles, pulsando dos veces la comilla simple, no utilizar nunca la
doble. El 1 al tratase de un entero, no necesita comillas, es un valor
numérico, el resto de los campo (ahora columnas) al ser de texto
(VARCHAR) si necesita estar entre comillas simples, pero al estar ya
dentro de un texto entre comillas, para indicarle al compilador que la
comilla no finaliza el texto, en lugar de una comilla simple escribimos
dos comillas simples, el dato, y nuevamente dos comillas simples. También se puede usar la función QuotedStr para evitar tantos apóstrofes.
Ahora pasemos a explicar esto:
‘ ‘demodb.db’ ‘, ‘+ ‘ ‘ ‘ ‘ + CurrentDirectory + ‘ ‘ ‘ ) ; ‘ ) ;
corto la cadena de caracteres luego de la coma, la finalizo con la comilla simple y le concateno el directorio actual:
‘ ‘ ‘ ‘ la primer comilla inicia el texto y la última lo cierra, en medio dos comillas imprimen una comilla en la cadena.
+ para agregar el string que me devuelve CurrentDirectory, nuevamente + ‘
‘ ‘ tres comillas, la primera para iniciar nuevamente un texto, la
segunda y tercera para imprimir una comilla, luego ) ; ‘ esa última
comilla cierra.
Lo que sigue es un Disconnect para cerrar la conexión con la base de datos.
No hay comentarios:
Publicar un comentario