habe ja schon ab und an mal etwas Hilfe hier bekommen und dachte mir, warum versuchst du dich nicht mal an einem Tool für andere.
Vielleicht ist ja der angehängte Quellcode für PureBasic 4.20 (Final) für die SQLite-Datenbank für den einen oder anderen ganz hilfreich oder bietet gewisse Denkanstösse...?
Hoffe er funktioniert wie vorgesehen, bietet aber derzeit nur die Möglichkeit, die Datenbanktabellen anzuzeigen, zu löschen und die Inhalte der Datenbanktabellen darzustellen.
Code: Alles auswählen
; SQLite-Editor
; Harry Wessner 2008 - bamsagla
#Fenster = 0
#Fenster_Edit = 1
#Database = 0
Ende.b = 0
NewList Sternspeicher.s()
; LinkedList für den Fall, dass mehrere Spalten PrimaryKeys enthalten
Enumeration
  #Gadget_Frm_Db
  #Gadget_Frm_Tb
  #Gadget_Frm_Ct
  #Gadget_But_Db_Nw
  #Gadget_But_Db_Op
  #Gadget_But_Db_Cl
  #Gadget_But_Tb_Nw
  #Gadget_But_Tb_Op
  #Gadget_But_Tb_Dl
  #Gadget_But_Tb_Ed
  #Gadget_But_Ct_Nw
  #Gadget_But_Ct_Dl
  #Gadget_But_Ct_Ed
  #Gadget_Txt_In
  #Gadget_Txt_Cr
  #Gadget_Lic_Db
  #Gadget_Lic_Tb
  #Gadget_Edit_Lic
  #Gadget_Edit_Txt_Tb
  #Gadget_Edit_Txt_Nm
  #Gadget_Edit_Txt_Tp
  #Gadget_Edit_Str_Tb
  #Gadget_Edit_Str_Nm
  #Gadget_Edit_But_Nw
  #Gadget_Edit_But_Dl
  #Gadget_Edit_But_Ed
  #Gadget_Edit_But_Md
  #Gadget_Edit_But_Sv
  #Gadget_Edit_But_Ab
  #Gadget_Edit_Frm_Ed
  #Gadget_Edit_Cmb_Tp
  #Gadget_Edit_Chk_Un
  #Gadget_Edit_Chk_Nn
EndEnumeration
Procedure Allebuttons()
  DisableGadget(#Gadget_But_Tb_Op, 1)
  DisableGadget(#Gadget_But_Tb_Dl, 1)
  DisableGadget(#Gadget_But_Tb_Ed, 1)
  DisableGadget(#Gadget_But_Ct_Nw, 1)
  DisableGadget(#Gadget_But_Ct_Dl, 1)
  DisableGadget(#Gadget_But_Ct_Ed, 1)
EndProcedure
Procedure Aktualisieren(Tabellenname$)
  If CountGadgetItems(#Gadget_Lic_Tb) > 0: ClearGadgetItemList(#Gadget_Lic_Tb): EndIf
  If DatabaseQuery(#Database, "SELECT * FROM " + Tabellenname$ + ";")
    Spalten = DatabaseColumns(#Database)
    While NextDatabaseRow(#Database)
      Datensatz$ = ""
      For Allespalten = 0 To Spalten - 1
        Datensatz$ + GetDatabaseString(#Database, Allespalten) + Chr(10)
      Next
      AddGadgetItem(#Gadget_Lic_Tb, -1, Datensatz$)
    Wend
  EndIf
  SetGadgetState(#Gadget_Lic_Tb, -1)
  DisableGadget(#Gadget_But_Ct_Nw, 1)
  DisableGadget(#Gadget_But_Ct_Dl, 1)
  DisableGadget(#Gadget_But_Ct_Ed, 1)
EndProcedure
Procedure Tabellenladen(Dateiname$)
  If Not Dateiname$ = ""
    SetWindowTitle(#Fenster, "SQLite-Editor (" + Dateiname$ + ")")
  EndIf
  If CountGadgetItems(#Gadget_Lic_Db) > 0: ClearGadgetItemList(#Gadget_Lic_Db): EndIf
  If CountGadgetItems(#Gadget_Lic_Tb) > 0: ClearGadgetItemList(#Gadget_Lic_Tb): EndIf
  Spaltenzahl = SendMessage_(GetWindow_(GadgetID(#Gadget_Lic_Tb), #GW_CHILD), #HDM_GETITEMCOUNT, 0, 0)
  For Entferner = 0 To Spaltenzahl - 1
    RemoveGadgetColumn(#Gadget_Lic_Tb, 0)
  Next
  AddGadgetColumn(#Gadget_Lic_Tb, 0, "Tabelleninhalte", 680)
  If DatabaseQuery(#Database, "SELECT name FROM sqlite_master WHERE type='table';")
    While NextDatabaseRow(#Database)
      AddGadgetItem(#Gadget_Lic_Db, -1, GetDatabaseString(#Database, 0))
    Wend
  EndIf
  Allebuttons()
  SetGadgetText(#Gadget_Txt_Cr, "SQL: ")
  DisableGadget(#Gadget_But_Db_Cl, 0)
EndProcedure
If UseSQLiteDatabase()
  If OpenWindow(#Fenster, 0, 0, 750, 550, "SQLite-Editor", #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_Invisible)
    If CreateGadgetList(WindowID(#Fenster))
      Frame3DGadget(#Gadget_Frm_Db, 10, 10, 730, 60, "Datenbankaktionen")
      ButtonGadget(#Gadget_But_Db_Nw, 20, 30, 150, 30, "Neue Datenbank erstellen")
      ButtonGadget(#Gadget_But_Db_Op, 180, 30, 115, 30, "Datenbank öffnen")
      ButtonGadget(#Gadget_But_Db_Cl, 305, 30, 125, 30, "Datenbank schließen")
      TextGadget(#Gadget_Txt_In, 440, 30, 290, 30, "Beachten Sie bitte: Jede Änderung in diesem Programm wird sofort in der Datenbank vorgenommen!", 1)
      SetGadgetColor(#Gadget_Txt_In, #PB_Gadget_FrontColor, RGB(200, 0, 0))
      Frame3DGadget(#Gadget_Frm_Tb, 10, 80, 730, 180, "Tabellen in der Datenbank")
      ListIconGadget(#Gadget_Lic_Db, 20, 100, 410, 150, "Datenbanktabellen", 380, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
      ButtonGadget(#Gadget_But_Tb_Nw, 440, 100, 290, 30, "Neue Tabelle erstellen")
      ButtonGadget(#Gadget_But_Tb_Op, 440, 140, 290, 30, "Markierte Tabelle öffnen")
      ButtonGadget(#Gadget_But_Tb_Dl, 440, 180, 290, 30, "Markierte Tabelle löschen")
      ButtonGadget(#Gadget_But_Tb_Ed, 440, 220, 290, 30, "Markierte Tabelle bearbeiten")
      Frame3DGadget(#Gadget_Frm_Ct, 10, 270, 730, 270, "Inhalte der geöffneten Tabelle")
      StringGadget(#Gadget_Txt_Cr, 20, 290, 710, 20, "SQL: ", #PB_String_ReadOnly)
      ListIconGadget(#Gadget_Lic_Tb, 20, 310, 710, 180, "Tabelleninhalte", 680, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
      ButtonGadget(#Gadget_But_Ct_Nw, 20, 500, 230, 30, "Neuen Datensatz erstellen")
      ButtonGadget(#Gadget_But_Ct_Dl, 260, 500, 230, 30, "Markierten Datensatz löschen")
      ButtonGadget(#Gadget_But_Ct_Ed, 500, 500, 230, 30, "Markierten Datensatz bearbeiten")
      DisableGadget(#Gadget_But_Db_Cl, 1)
      DisableGadget(#Gadget_But_Tb_Nw, 1)
      DisableGadget(#Gadget_But_Tb_Op, 1)
      DisableGadget(#Gadget_But_Tb_Dl, 1)
      DisableGadget(#Gadget_But_Tb_Ed, 1)
      DisableGadget(#Gadget_But_Ct_Nw, 1)
      DisableGadget(#Gadget_But_Ct_Dl, 1)
      DisableGadget(#Gadget_But_Ct_Ed, 1)
    EndIf
    If OpenWindow(#Fenster_Edit, 0, 0, 550, 355, "Tabellenverwaltung", #PB_Window_WindowCentered | #PB_Window_Invisible, #Fenster)
      If CreateGadgetList(WindowID(#Fenster_Edit))
        TextGadget(#Gadget_Edit_Txt_Tb, 10, 10, 260, 20, "Bitte geben Sie einen Namen für die Tabelle ein:", 512)
        StringGadget(#Gadget_Edit_Str_Tb, 270, 10, 270, 20, "")
        ListIconGadget(#Gadget_Edit_Lic, 10, 40, 350, 270, "PK", 30, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection | #PB_ListIcon_CheckBoxes)
        AddGadgetColumn(#Gadget_Edit_Lic, 1, "Spaltenname", 110)
        AddGadgetColumn(#Gadget_Edit_Lic, 2, "Typ", 70)
        AddGadgetColumn(#Gadget_Edit_Lic, 3, "Optionen", 100)
        ButtonGadget(#Gadget_Edit_But_Nw, 370, 40, 170, 25, "Neuen Eintrag")
        ButtonGadget(#Gadget_Edit_But_Dl, 370, 75, 170, 25, "Eintrag löschen")
        ButtonGadget(#Gadget_Edit_But_Ed, 370, 110, 170, 25, "Eintrag bearbeiten")
        Frame3DGadget(#Gadget_Edit_Frm_Ed, 370, 145, 170, 165, "Spalte bearbeiten")
        TextGadget(#Gadget_Edit_Txt_Nm, 380, 165, 50, 20, "Name:", 512)
        StringGadget(#Gadget_Edit_Str_Nm, 430, 165, 100, 20, "")
        TextGadget(#Gadget_Edit_Txt_Tp, 380, 195, 50, 20, "Typ:", 512)
        ComboBoxGadget(#Gadget_Edit_Cmb_Tp, 430, 195, 100, 20, #PB_ComboBox_Editable)
        AddGadgetItem(#Gadget_Edit_Cmb_Tp, -1, "INTEGER")
        AddGadgetItem(#Gadget_Edit_Cmb_Tp, -1, "TEXT")
        AddGadgetItem(#Gadget_Edit_Cmb_Tp, -1, "VARCHAR(x)")
        AddGadgetItem(#Gadget_Edit_Cmb_Tp, -1, "NUMERIC")
        AddGadgetItem(#Gadget_Edit_Cmb_Tp, -1, "REAL")
        AddGadgetItem(#Gadget_Edit_Cmb_Tp, -1, "BLOB")
        CheckBoxGadget(#Gadget_Edit_Chk_Un, 380, 225, 150, 20, "Option: UNIQUE")
        CheckBoxGadget(#Gadget_Edit_Chk_Nn, 380, 245, 150, 20, "Option: NOT NULL")
        ButtonGadget(#Gadget_Edit_But_Md, 380, 275, 150, 25, "Spalte eintragen")
        ButtonGadget(#Gadget_Edit_But_Sv, 10, 320, 250, 25, "Tabelle speichern")
        ButtonGadget(#Gadget_Edit_But_Ab, 270, 320, 270, 25, "Änderungen verwerfen")
        DisableGadget(#Gadget_Edit_But_Nw, 1)
        DisableGadget(#Gadget_Edit_But_Dl, 1)
        DisableGadget(#Gadget_Edit_But_Ed, 1)
      EndIf
    EndIf
    HideWindow(#Fenster, 0)
    Repeat
      Select WaitWindowEvent()
        Case #PB_Event_CloseWindow
          Ende = 1
        Case #PB_Event_Gadget
          Aktionstyp = EventType()
          Select EventGadget()
            Case #Gadget_But_Db_Nw
              Speicherdatei$ = SaveFileRequester("Datenbank erstellen", "", "SQLite Datenbank (*.sqlite - *.sql)|*.sqlite;*.sql|Beliebige Erweiterung (*.*)|*.*", 0)
              If Not Trim(Speicherdatei$) = ""
                If GetExtensionPart(Speicherdatei$) = "": Speicherdatei$ + ".sqlite": EndIf
                Killfrage = #PB_MessageRequester_Yes
                If FileSize(Speicherdatei$) >= 0
                  Killfrage = MessageRequester("Datei überschreiben?", "Die gewählte Datei existiert bereits!" + Chr(10) + "Möchten Sie die bestehende Datenbank wirklich überschreiben?", #PB_MessageRequester_YesNo | #MB_ICONQUESTION)
                EndIf
                If Killfrage = #PB_MessageRequester_Yes
                  If CreateFile(#Database, Speicherdatei$)
                    CloseFile(#Database)
                    If IsDatabase(#Database): CloseDatabase(#Database): EndIf
                    If OpenDatabase(#Database, Speicherdatei$, "", "")
                      Tabellenladen(Speicherdatei$)
                    Else
                      MessageRequester("Datenbankfehler","Die Datenbank konnte nicht geöffnet werden." + Chr(10) + "Möglicherweise wurde die Datenbank entfernt oder der Quellpfad ist nicht mehr vorhanden.", #MB_ICONERROR)
                    EndIf
                  Else
                    MessageRequester("Dateifehler","Die Datenbank konnte am gewünschten Pfad nicht erstellt werden." + Chr(10) + "Bitte stellen Sie sicher, dass der Pfad vorhanden ist und Sie entsprechende Rechte besitzen.",#MB_ICONERROR)
                  EndIf
                Else
                  MessageRequester("Datenerstellung abgebrochen","Die Datenbank wurde nicht erstellt." + Chr(10) + "Der Vorgang wurde durch den Benutzer abgebrochen.", #MB_ICONINFORMATION)
                EndIf
              EndIf
            Case #Gadget_But_Db_Op
              Offendatei$ = OpenFileRequester("Datenbank auswählen", "", "SQLite Datenbanken (*.sqlite - *.sql)|*.sqlite;*.sql|Alle Dateien (*.*)|*.*", 0)
              If Not Trim(Offendatei$) = ""
                If IsDatabase(#Database)
                  CloseDatabase(#Database)
                EndIf
                If OpenDatabase(#Database, Offendatei$, "", "")
                  Tabellenladen(Offendatei$)
                  Allebuttons()
                  DisableGadget(#Gadget_But_Tb_Nw, 0)
                Else
                  MessageRequester("Datenbankfehler","Die Datenbank konnte nicht geöffnet werden." + Chr(10) + "Möglicherweise wurde die Datenbank entfernt oder der Quellpfad ist nicht mehr vorhanden.", #MB_ICONERROR)
                EndIf
              EndIf
            Case #Gadget_But_Db_Cl
              If IsDatabase(#Database)
                CloseDatabase(#Database)
                SetWindowTitle(#Fenster, "SQLite-Editor")
                If CountGadgetItems(#Gadget_Lic_Db) > 0: ClearGadgetItemList(#Gadget_Lic_Db): EndIf
                If CountGadgetItems(#Gadget_Lic_Tb) > 0: ClearGadgetItemList(#Gadget_Lic_Tb): EndIf
                Spaltenzahl = SendMessage_(GetWindow_(GadgetID(#Gadget_Lic_Tb), #GW_CHILD), #HDM_GETITEMCOUNT, 0, 0)
                For Entferner = 0 To Spaltenzahl - 1
                  RemoveGadgetColumn(#Gadget_Lic_Tb, 0)
                Next
                AddGadgetColumn(#Gadget_Lic_Tb, 0, "Tabelleninhalte", 680)
                DisableGadget(#Gadget_But_Db_Cl, 1)
                Allebuttons()
                DisableGadget(#Gadget_But_Tb_Nw, 1)
              EndIf
            Case #Gadget_Lic_Db
              If Aktionstyp = #PB_EventType_Change
                If GetGadgetState(#Gadget_Lic_Db) = -1
                  DisableGadget(#Gadget_But_Tb_Op, 1)
                  DisableGadget(#Gadget_But_Tb_Dl, 1)
                  DisableGadget(#Gadget_But_Tb_Ed, 1)
                Else
                  DisableGadget(#Gadget_But_Tb_Op, 0)
                  DisableGadget(#Gadget_But_Tb_Dl, 0)
                  ;DisableGadget(#Gadget_But_Tb_Ed, 0)
                EndIf
              EndIf
            Case #Gadget_But_Tb_Nw
              If CountGadgetItems(#Gadget_Edit_Lic) > 0: ClearGadgetItemList(#Gadget_Edit_Lic): EndIf
              SetGadgetText(#Gadget_Edit_Str_Tb, "")
              SetGadgetText(#Gadget_Edit_Str_Nm, "")
              SetGadgetText(#Gadget_Edit_Cmb_Tp, "")
              SetGadgetState(#Gadget_Edit_Chk_Un, 0)
              SetGadgetState(#Gadget_Edit_Chk_Nn, 0)
              DisableWindow(#Fenster,1)
              Xpos = WindowX(#Fenster) + 100
              Ypos = WindowY(#Fenster) + 110
              ResizeWindow(#Fenster_Edit, Xpos, Ypos, #PB_Ignore, #PB_Ignore)
              HideWindow(#Fenster_Edit,0)
              SetActiveWindow(#Fenster_Edit)
            Case #Gadget_But_Tb_Op
              If Not GetGadgetState(#Gadget_Lic_Db) = -1
                Tabellenname$ = GetGadgetItemText(#Gadget_Lic_Db,GetGadgetState(#Gadget_Lic_Db),0)
                If CountGadgetItems(#Gadget_Lic_Tb) > 0: ClearGadgetItemList(#Gadget_Lic_Tb): EndIf
                Spaltenzahl = SendMessage_(GetWindow_(GadgetID(#Gadget_Lic_Tb), #GW_CHILD), #HDM_GETITEMCOUNT, 0, 0)
                For Entferner = 0 To Spaltenzahl - 1
                  RemoveGadgetColumn(#Gadget_Lic_Tb, 0)
                Next
                If CountList(Sternspeicher()) > 0: ClearList(Sternspeicher()): EndIf
                If DatabaseQuery(#Database, "PRAGMA table_info('" + Tabellenname$ + "');")
                  While NextDatabaseRow(#Database)
                    If GetDatabaseLong(#Database, 5) = 1
                      AddElement(Sternspeicher()): Sternspeicher() = GetDatabaseString(#Database, 1)
                    EndIf
                  Wend
                EndIf
                If DatabaseQuery(#Database, "SELECT * FROM " + Tabellenname$ + ";")
                  Spalten = DatabaseColumns(#Database)
                  For Allespalten = 0 To Spalten - 1
                    Spaltenname$ = DatabaseColumnName(#Database, Allespalten)
                    Select DatabaseColumnType(#Database, Allespalten)
                      Case #PB_Database_Long: Spaltentyp$ = " [1]"
                      Case #PB_Database_Double: Spaltentyp$ = " [12]"
                      Case #PB_Database_Quad: Spaltentyp$ = " [123]"
                      Case #PB_Database_String: Spaltentyp$ = " [A]"
                      Case #PB_Database_Float: Spaltentyp$ = " [1.2]"
                      Default: Spaltentyp$ = " [???]"
                    EndSelect
                    ForEach Sternspeicher()
                      If Sternspeicher() = Spaltenname$
                        Spaltentyp$ + " [!]"
                        SetGadgetData(#Gadget_Lic_Tb, Allespalten)
                      EndIf
                    Next
                    AddGadgetColumn(#Gadget_Lic_Tb, Allespalten, Spaltenname$ + Spaltentyp$, 100)
                  Next
                  While NextDatabaseRow(#Database)
                    Datensatz$ = ""
                    For Allespalten = 0 To Spalten - 1
                      Datensatz$ + GetDatabaseString(#Database, Allespalten) + Chr(10)
                    Next
                    AddGadgetItem(#Gadget_Lic_Tb, -1, Datensatz$)
                  Wend
                EndIf
                If DatabaseQuery(#Database, "SELECT sql FROM sqlite_master WHERE type='table' AND name='" + Tabellenname$ + "';")
                  NextDatabaseRow(#Database)
                  SetGadgetText(#Gadget_Txt_Cr, "SQL: " + GetDatabaseString(#Database, 0))
                EndIf
              EndIf
            Case #Gadget_But_Tb_Dl
              If Not GetGadgetState(#Gadget_Lic_Db) = -1
                Tabellenname$ = GetGadgetItemText(#Gadget_Lic_Db,GetGadgetState(#Gadget_Lic_Db),0)
                Entscheidung = MessageRequester("Tabelle löschen?", "Alle Daten in der Tabelle " + Tabellenname$ + " gehen unwiederbringlich verloren!" + Chr(10) + "Möchten Sie die Tabelle wirklich aus der Datenbank löschen?", #PB_MessageRequester_YesNo | #MB_ICONQUESTION)
                If Entscheidung = #PB_MessageRequester_Yes
                  If DatabaseUpdate(#Database, "DROP TABLE " + Tabellenname$ + ";")
                    Tabellenladen("")
                    SetGadgetState(#Gadget_Lic_Db, -1)
                    SetGadgetText(#Gadget_Txt_Cr, "SQL: ")
                    DisableGadget(#Gadget_But_Tb_Op, 1)
                    DisableGadget(#Gadget_But_Tb_Dl, 1)
                    DisableGadget(#Gadget_But_Tb_Ed, 1)
                    DisableGadget(#Gadget_But_Ct_Nw, 1)
                    DisableGadget(#Gadget_But_Ct_Dl, 1)
                    DisableGadget(#Gadget_But_Ct_Ed, 1)
                  Else
                    MessageRequester("Datenbankfehler", "Die Tabelle konnte nicht gelöscht werden." + Chr(10) + DatabaseError(), #MB_ICONERROR)
                  EndIf
                EndIf
              EndIf
            Case #Gadget_But_Tb_Ed
              ; Noch nicht vorhanden
            Case #Gadget_Lic_Tb
              If Aktionstyp = #PB_EventType_Change
                If GetGadgetState(#Gadget_Lic_Tb) = -1
                  DisableGadget(#Gadget_But_Ct_Nw, 1)
                  DisableGadget(#Gadget_But_Ct_Dl, 1)
                  DisableGadget(#Gadget_But_Ct_Ed, 1)
                Else
                  ;DisableGadget(#Gadget_But_Ct_Nw, 0)
                  DisableGadget(#Gadget_But_Ct_Dl, 0)
                  ;DisableGadget(#Gadget_But_Ct_Ed, 0)
                EndIf
              EndIf
            Case #Gadget_But_Ct_Nw
              ; Noch nicht vorhanden
            Case #Gadget_But_Ct_Dl
              If Not GetGadgetState(#Gadget_Lic_Tb) = -1
                Primarykey = GetGadgetData(#Gadget_Lic_Tb)
                Indexwert$ = GetGadgetItemText(#Gadget_Lic_Tb, GetGadgetState(#Gadget_Lic_Tb), Primarykey)
                Indexname$ = GetGadgetItemText(#Gadget_Lic_Tb, -1, Primarykey)
                Indexname$ = Left(Indexname$, FindString(Indexname$, " [", 1) - 1)
                Entscheidung = MessageRequester("Wert löschen?", "Der markierte Eintrag geht unwiederbringlich verloren!" + Chr(10) + "Möchten Sie den Wert wirklich aus der Tabelle löschen?", #PB_MessageRequester_YesNo | #MB_ICONQUESTION)
                If Entscheidung = #PB_MessageRequester_Yes
                  If DatabaseUpdate(#Database, "DELETE FROM " + Tabellenname$ + " WHERE " + Indexname$ + "=" + Indexwert$ + ";")
                    Aktualisieren(Tabellenname$)
                  Else
                    ; Falls der Index textbasiert sein sollte...
                    If DatabaseUpdate(#Database, "DELETE FROM " + Tabellenname$ + " WHERE " + Indexname$ + "='" + Indexwert$ + "';")
                      Aktualisieren(Tabellenname$)
                    Else
                      MessageRequester("Datenbankfehler", "Der Eintrag konnte nicht gelöscht werden." + Chr(10) + DatabaseError(), #MB_ICONERROR)
                    EndIf
                  EndIf
                EndIf
              EndIf
            Case #Gadget_But_Ct_Ed
              ; Noch nicht vorhanden
            Case #Gadget_Edit_But_Md
              Spaltenname$ = GetGadgetText(#Gadget_Edit_Str_Nm)
              Spaltentyp$ = GetGadgetText(#Gadget_Edit_Cmb_Tp)
              Spaltenoption$ = ""
              If GetGadgetState(#Gadget_Edit_Chk_Un) = 1: Spaltenoption$ + "UNIQUE ": EndIf
              If GetGadgetState(#Gadget_Edit_Chk_Nn) = 1: Spaltenoption$ + "NOT NULL ": EndIf
              If Not (Spaltenname$ = "" And Spaltentyp$ = "")
                If Spaltentyp$ = "VARCHAR(x)"
                  MessageRequester("Datentyp überprüfen", "Bitte geben Sie beim Datentyp VARCHAR() immer auch die Länge des Inhalts mit an." + Chr(10) + "Somit beispielsweise VARCHAR(20) für eine Zeichenbegrenzung von 20 Zeichen.", #MB_ICONERROR)
                Else
                  AddGadgetItem(#Gadget_Edit_Lic, -1, "" + Chr(10) + Spaltenname$ + Chr(10) + Spaltentyp$ + Chr(10) + Spaltenoption$)
                  SetGadgetText(#Gadget_Edit_Str_Nm, "")
                  SetGadgetText(#Gadget_Edit_Cmb_Tp, "")
                  SetGadgetState(#Gadget_Edit_Chk_Un, 0)
                  SetGadgetState(#Gadget_Edit_Chk_Nn, 0)
                EndIf
              Else
                MessageRequester("Eingaben überprüfen", "Bitte geben Sie mindestens einen Namen für die Spalte und einen Datentyp ein." + Chr(10) + "Beim Datentyp sind auch andere Eingaben als nur die Listeneinträge erlaubt.", #MB_ICONERROR)
              EndIf
            Case #Gadget_Edit_But_Sv
              If CountGadgetItems(#Gadget_Edit_Lic) > 0
                Neuername$ = GetGadgetText(#Gadget_Edit_Str_Tb)
                If Not Neuername$ = ""
                  Primaryzahl = 0: Spaltenbefehl$ = ""
                  For Allespalten = 0 To CountGadgetItems(#Gadget_Edit_Lic) - 1
                    Zusatz$ = ""
                    If GetGadgetItemState(#Gadget_Edit_Lic, Allespalten) & #PB_ListIcon_Checked
                      Primaryzahl + 1: Zusatz$ = "PRIMARY KEY"
                    EndIf
                    Spaltenbefehl$ + GetGadgetItemText(#Gadget_Edit_Lic, Allespalten, 1) + " " + GetGadgetItemText(#Gadget_Edit_Lic, Allespalten, 2) + " " + Zusatz$ + " " + Trim(GetGadgetItemText(#Gadget_Edit_Lic, Allespalten, 3)) + ", "
                  Next
                  If Right(Spaltenbefehl$, 2) = ", ": Spaltenbefehl$ = Left(Spaltenbefehl$, Len(Spaltenbefehl$) - 2): EndIf
                  Spaltenbefehl$ = Trim(Spaltenbefehl$)
                  Primaryantwort = #PB_MessageRequester_Yes
                  If Primaryzahl = 0
                    Primaryantwort = MessageRequester("Kein Primärschlüssel", "Zur besseren Verwaltung der Tabelle wird eine Spalte mit Primärschlüssel empfohlen. Diese Spalte sollte auch den Datentyp INTEGER und die Optionen NOT NULL und UNIQUE beinhalten." + Chr(10) + "Möchten Sie die Tabelle wirklich ohne Primärschlüssel erstellen?", #PB_MessageRequester_YesNo | #MB_ICONQUESTION)
                  EndIf
                  If Primaryantwort = #PB_MessageRequester_Yes
                    If DatabaseUpdate(#Database, "CREATE TABLE " + Neuername$ + " (" + Spaltenbefehl$ + ");")
                      DisableWindow(#Fenster,0)
                      HideWindow(#Fenster_Edit,1)
                      SetActiveWindow(#Fenster)
                      Tabellenladen("")
                    Else
                      MessageRequester("Datenbankfehler", "Beim Ausführen des SQL-Kommandos ist ein Fehler aufgetreten." + Chr(10) + DatabaseError(), #MB_ICONERROR)
                    EndIf
                  EndIf
                Else
                  MessageRequester("Kein Tabellenname", "Bitte geben Sie einen Namen für die Tabelle ein." + Chr(10) + "Dieser Name ist für weitere SELECT-Anweisungen unbedingt erforderlich.", #MB_ICONERROR)
                EndIf
              Else
                MessageRequester("Keine Spalten vorhanden", "Bitte geben Sie mindestens eine Spalte für die Tabelle ein." + Chr(10) + "Möchten Sie die Erfassung abbrechen, verwenden Sie bitte den Änderungen verwerfen Button, möchten Sie die Tabelle löschen, verwenden Sie bitte den Punkt Tabelle löschen im Hauptmenü.", #MB_ICONERROR)
              EndIf
            Case #Gadget_Edit_But_Ab
              DisableWindow(#Fenster,0)
              HideWindow(#Fenster_Edit,1)
              SetActiveWindow(#Fenster)
           EndSelect
        Case 0
          Delay(1)
      EndSelect
    Until Ende = 1
    If IsDatabase(#Database)
      CloseDatabase(#Database)
    EndIf
  Else
    MessageRequester("Programmfehler","Das Anwendungsfenster konnte nicht erstellt werden." + Chr(10) + "Das Programm wird beendet.",#MB_ICONERROR)
  EndIf
Else
  MessageRequester("SQLite-Fehler","Beim Initialisieren der SQLite-Umgebung ist ein Fehler aufgetreten." + Chr(10) + "Das Programm wird beendet.",#MB_ICONERROR)
EndIf
EndRückfragen, Verbesserungsvorschläge und Kritik sind gern gesehen.
Tschausen, Harry.

