Ir al contenido


Foto

CREATE TABLE una si la otra no la crea


  • Por favor identifícate para responder
3 respuestas en este tema

#1 dooper

dooper

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes

Escrito 29 abril 2021 - 05:02

Mi afán por aprender y no rendirme en el intento, me he dado de cabeza nuevamente, con la creación de una tabla que la crea sin problemas, pero al crear otra me muestra "Database is locked". El día anterior fue imposible hacerlo funcionar, lo dejé, pero lo más anecdótico, es que a la mañana siguiente he vuelto a cargar  el codigo y ejecutar y zass ha funcionado y ok, crea  segunda tabla y la primera ya estaba. Al volver a añadir campos a la tabla por olvido y compilar, otra vez el mensaje de bloqueo. Así no se puede aprender con estos fallos de "Ahora te lo doy, luego no....". He borrado base datos, tabla, reconfigurar y nada. Sé que el problema según he leído es de transacciones y demás que no controlo y aparte veo que está en el segundo EXECSQL, porque si lo elimino, funciona pero no crea tabla personas.  Como corregirlo para ser operativo. Deberé crear más tablas.


php
  1. ZConnection1.Database:= ExtractFilePath(Application.ExeName) + 'dbclientes.sqlite';
  2. ZConnection1.LibraryLocation:= ExtractFilePath(Application.ExeName) + 'sqlite3.dll';
  3. ZConnection1.Protocol:= 'sqlite-3';
  4.  
  5. ZQuery1.Close; //Por si acaso
  6. ZQuery2.Close; // Por si acaso.
  7.  
  8. ZQuery1.SQL.Text := 'CREATE TABLE IF NOT EXISTS "clientes" (codigo varchar(10) PRIMARY KEY NOT NULL, nombre varchar(10), apellidos varchar(50))';
  9. ZQuery1.ExecSQL;
  10.  
  11. ZQuery1.SQL.Text := 'CREATE TABLE IF NOT EXISTS "personas" (npersona varchar(20) PRIMARY KEY NOT NULL, edad integer, ciudad varchar(20))';
  12. ZQuery1.ExecSQL;

Muchas gracias


  • 0

#2 dooper

dooper

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes

Escrito 29 abril 2021 - 05:46

Pues me autoayudo, aunque sigo diciendo que me ha funcionado antes sin hacer lo siguiente:

 

He conectado la base de datos mediante código Zconnection:=true; eliminando del Editor de objetos connection como true; Y ha funcionado. Creo que al abrir el IDE bloquea la escritura. Otra cuestión aprendida.

 

Cruzo los dedos, porque repito, me funcionó durante un par de veces, sin hacerlo así.

 

Gracias


  • 0

#3 Gaston

Gaston

    Advanced Member

  • Miembros
  • PipPipPip
  • 109 mensajes

Escrito 29 abril 2021 - 01:35

Hola, para crear tablas se hace via  ZConnection1.ExecuteDirect y en general para todo lo que sea actualizar.

Ejemplo:


delphi
  1. ZConnection1.ExecuteDirect('CREATE TABLE IF NOT EXISTS "clientes" (codigo varchar(10) PRIMARY KEY NOT NULL, nombre varchar(10), apellidos varchar(50)) '+
  2. 'CREATE TABLE IF NOT EXISTS "personas" (npersona varchar(20) PRIMARY KEY NOT NULL, edad integer, ciudad varchar(20))';

Desde ya antes de abrir las querys.

 

Saludos.


  • 0

#4 dooper

dooper

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes

Escrito 30 abril 2021 - 03:03

Muchas gracias Gaston. Había  visto este tipo de sentencia para crear las tablas. Lo que si he visto es el uso de Commit, Traslation y realmente no se cuando usarlos.

 

Me lo apunto. Una intrucción más de como crearla. Muchas gracias de nuevo.


  • 0




IP.Board spam blocked by CleanTalk.