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 fileDim r As Result
Public conexion As Connection
Public Sub Button1_Click()
Dialog.Path = User.HomeIf 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