Seite 1 von 1
SQLite Fragen zur Datenbankprogrammierung
Verfasst: 02.05.2019 13:22
von Mijikai
Fragen zur SQLite Datenbankprogrammierung
Testen ob ein Table existiert!
Ist der Code so ok?
Code: Alles auswählen
Procedure.i TableExists(*Database,Table.s)
Protected query.i
query = DatabaseQuery(*Database,"SELECT 1 FROM " + Table + ";")
FinishDatabaseQuery(*Database)
ProcedureReturn query
EndProcedure
Wann und wie die Datenbank bereinigen?
Vor jedem beenden?
Code: Alles auswählen
Procedure.i Cleanup(*Database)
ProcedureReturn DatabaseUpdate(*Database,"VACUUM")
EndProcedure
Re: SQLite Fragen zur Datenbankprogrammierung
Verfasst: 02.05.2019 13:28
von RSBasic
Mijikai hat geschrieben:Testen ob ein Table existiert!
Damit prüfst du nur, ob in der Tabelle Datensätze vorhanden sind, aber du möchtest eigentlich prüfen, ob die Tabelle existiert oder?
Wenn ja, dann:
Code: Alles auswählen
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'" + Table + "')
BEGIN
PRINT 'Tabelle existiert'
END
Aber ich weiß nicht, ob es in SQLLite sowas möglich ist.
Re: SQLite Fragen zur Datenbankprogrammierung
Verfasst: 02.05.2019 18:02
von mk-soft
Habe mal hier gesucht...
http://www.sqlitetutorial.net/sqlite-tu ... ow-tables/
Code: Alles auswählen
UseSQLiteDatabase()
Procedure CheckDatabaseUpdate(Database, Query$)
Result = DatabaseUpdate(Database, Query$)
If Result = 0
Debug DatabaseError()
EndIf
ProcedureReturn Result
EndProcedure
Define DatabaseFile$ = ":memory:"
Define sql.s
If CreateFile(0, DatabaseFile$)
CloseFile(0)
If OpenDatabase(0, DatabaseFile$, "", "")
CheckDatabaseUpdate(0, "CREATE TABLE IF NOT EXISTS food (name CHAR(50), weight INT)")
CheckDatabaseUpdate(0, "INSERT INTO food (name, weight) VALUES ('apple', '10')")
CheckDatabaseUpdate(0, "INSERT INTO food (name, weight) VALUES ('pear', '5')")
CheckDatabaseUpdate(0, "INSERT INTO food (name, weight) VALUES ('banana', '20')")
CheckDatabaseUpdate(0, "CREATE TABLE name (name CHAR(50), city CHAR(50))")
CheckDatabaseUpdate(0, "CREATE TABLE title (name CHAR(50), city CHAR(50))")
;sql = "SELECT * FROM food WHERE weight > 7"
;sql = "Select name FROM sqlite_master WHERE type = 'table' And name Not LIKE 'sqlite_%';"
sql = "Select count(name) FROM sqlite_master WHERE type = 'table' And name = 'food';"
If DatabaseQuery(0, sql)
While NextDatabaseRow(0)
Debug GetDatabaseString(0, 0)
Wend
FinishDatabaseQuery(0)
Else
Debug DatabaseError()
EndIf
CloseDatabase(0)
Else
Debug "Can't open database !"
EndIf
Else
Debug "Can't create the database file !"
EndIf