Comunidad Gambas-es
Problema con creación de BD SQlite3 que antes si funcionaba - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: Bases de Datos (https://gambas-es.org/forum-6.html)
+--- Tema: Problema con creación de BD SQlite3 que antes si funcionaba (/thread-2010.html)



Problema con creación de BD SQlite3 que antes si funcionaba - Marcos - 13-02-2026

Hola, buen día chicos:

Hace un par de meses venia trabajando en un proyecto personal para catalogar imágenes y dejar de tener todo perdido en el PC. ademas de tener la opción de crear un catalogo compartido con otros usuarios de la misma maquina. Bajo ese marco de trabajo tengo una rutina que hasta la versión 3.19 en kdeNeon me funcionaba perfecto.

Por cosas de la vida actualice mi maquina a Manjaro con plasma y aquí esta la versión 3.21 de Gambas3. Me toco cambiar los componentes gb.db a gb.db2.

La aplicación con la BD creada sigue funcionando, agrego, elimino, etc., pero al iniciar desde cero la aplicación donde debe crear la BD no hace nada por que la sección de creación de BD no funciona y no envía mensaje de error, salvo cuando reintenta abrir la BD y no la encuentra. 

$DB.Databases.Add(Constants.DATABASE_NAME)  <== esta linea no esta haciendo nada ni enviando mensaje alguno hacia afuera


Sera error de la nueva versión?, error de los nuevos componentes?
este código lo rescate desde el tutorial de http://jsbsan.blogspot.com.es/ 

Código:
Private Sub CreateDatabase()
  'Crear conexión temporal para crear la BD
  $DB = New Connection
  $DB.Type = Constants.DATABASE_SQLITE3
  $DB.Host = $DbLibraryDirectory
  $DB.Name = "" 'Liberamos el nombre para poder crear la BD física
  $DB.Open()
  If Error Then
    $Log4Gambas.Fatal(("No se puede abrir conexión para crear BD:") & " " & Error.Text)
    ERROR.Propagate
  Endif
  'Ya sabemos que el archivo de base de datos no existe, aqui preguntamos via connect
  If Not $DB.Databases.Exist(Constants.DATABASE_NAME) Then
    '' NOTE: Aqui ocurre la magia, se crea la base de datos
    $DB.Databases.Add(Constants.DATABASE_NAME)
    Wait 0.05 ' Pequeña pausa para asegurar creación fisica del archivo
    If Error Then
      $Log4Gambas.Fatal(("No se puede crear base de datos:") & " " & Error.Text)
      $DB.Close()
      ERROR.Propagate
    Endif
  Endif
  ' cerramos la conexion para asegurar soltarla y ahora usar el nombre
  $DB.Close()
  ' Reconectar con el nombre de la BD y crear esquema
  $DB.Name = Constants.DATABASE_NAME
  ' Volvemos a conectarnos
  $DB.Open()
  If Error Then
    $Log4Gambas.Fatal(("No se puede reabrir BD recién creada:") & " " & Error.Text)
    ERROR.Propagate
  Endif
  $DB.Close()
  $Log4Gambas.Info(("Base de datos creada exitosamente"))
End