Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic



Consultas, Desarrollo de programas y petición de presupuestos:



jueves, 4 de septiembre de 2014

Listar la tablas y vistas que tiene una base de datos sqlite

Listar la tablas y vistas que tiene una base de datos sqlite


Ampliando un programa, me he encontrado el siguiente problema: necesitaba añadir algunas nuevas tabla a una a la base de datos sqlite que tenía creada (y ya con datos).

Pues se me ha ocurrido hacerlo así:
1) Ver que las tablas existentes
2) Si falta la tabla nueva, la creo con una sentencia sql

El paso 1º es necesario para comprobar  si ya hemos hecho una vez el proceso, y no volver a repetir el paso 2º (crear la tabla nueva)

Pero ¿como veo las tablas que tiene la base de dato?

Con la sentencia:

SELECT * FROM sqlite_master where type="table"

Obtenemos la información de las tablas existentes.



El campo "name" indica el nombre, con lo cual ya puedo comprobar si existe la table, y en caso de no existir, crearla con la sentencia sql.

Para listar las vistas (view) la sentencia sería:

SELECT * FROM sqlite_master where type="view"


Nota: 01/10/2017

Ejemplo de como se haria en gambas:
gambas class file
Public conexion As Connection

Public Sub Button1_Click()
           Dim r As Result
 Dialog.Path = User.Home
       If Dialog.OpenFile() Then Return
  
      ListBox1.Clear()
      conexion = New Connection
      conexion.Type = "sqlite3"
      conexion.Host = File.Dir(Dialog.Path)
      conexion.Name = File.Name(Dialog.Path)
      conexion.Open()

      r = conexion.Exec("select * from sqlite_master where type='view'")

      If r.Available Then    
          Do While r.Available
             ListBox1.Add(r!name)
             r.MoveNext
          Loop
      Endif
     
     conexion.Close()

  End

Fuentes:
http://www.ajpdsoft.com/modules.php?name=Foros&file=viewtopic&t=1641
http://stackoverflow.com/questions/1601151/how-do-i-check-in-sqlite-whether-a-table-exists