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!

Code: Alles auswählen

SELECT 1 FROM " + Table + ";")
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