Seite 2 von 2
Verfasst: 20.05.2007 15:08
von Kiffi
PureBasic4.0 hat geschrieben:Reicht das aus, um DBHandle korrekt zu befüllen?:
Code: Alles auswählen
DBHandle = SQLiteOpen(#DBName)
If Not DBHandle
MessageRequester("Fehler","Die Datei "+#DBName+" konnte nicht geladen bzw. erstellt werden",#MB_ICONSTOP)
End
EndIf
jop, ist OK so. SQLiteInit() hast Du vorher sicherlich auch ausgeführt, oder?
PureBasic4.0 hat geschrieben:Nein, PureBasic mit seinen IMAs!
ich benutze SQLite in etlichen Projekten und habe noch nie einen IMA
bekommen. Zumeist sitzt der Bug vor der Tastatur
Hier ein kleiner Testcode ohne IMAs:
Code: Alles auswählen
EnableExplicit
XIncludeFile "sqlite.pbi"
Define.l Neu
Define.l i
Define.l dbHandler
Define.SQ3_TABLEMAP Table
#Database="D:\test.db"
SQLiteInit()
If FileSize(#Database) = -1 ; Datenbank noch nicht vorhanden?
Debug "Datenbank ist (noch) nicht vorhanden"
Neu = #True
Else
Debug "Datenbank ist bereits vorhanden"
Neu = #False
EndIf
dbHandler = SQLiteOpen(#Database) ; Neue Datenbank wird geöffnet / erstellt
If Not dbHandler
If Neu
MessageRequester("", "Datenbank konnte nicht erstellt werden")
Else
MessageRequester("", "Datenbank konnte nicht geöffnet werden")
EndIf
End
EndIf
If Neu
Debug "Tabelle mit Feldern wird erstellt..."
SQLiteExecute(dbHandler, "Create Table myTestTable (Field1, Field2, Field3)")
Debug "Testwerte einfügen..."
For i = 1 To 10
SQLiteExecute(dbHandler, "Insert Into myTestTable (Field1, Field2, Field3) Values ('Feld1 Wert" + Str(i) + "', 'Feld2 Wert" + Str(i) + "', 'Feld3 Wert" + Str(i) + "')")
Next
i=0
EndIf
Debug "Auslesen der Daten..."
SQLiteGetTable(dbHandler, "SELECT * FROM myTestTable", Table)
If Table
While SQLiteNextRow(Table)
i + 1 : Debug "Row " + Str(i) + ":"
While SQLiteNextCol(Table)
Debug SQLiteValue(Table)
Wend
Wend
SQliteFreeTable(Table)
EndIf
SQLiteClose(dbHandler)
SQLiteEnd()
Grüße ... Kiffi
Captn. Jinguji: hat geschrieben:Öhmm... braucht man bei SQLITE keine Typ- und Größenangaben für die Columns ?
kann man angeben, braucht man aber nicht. Das ist ja gerade einer der
Riesenvorteile, die SQLite bietet.
// Edit: Der Code wurde um ein fehlendes SQliteFreeTable(Table) erweitert.
Verfasst: 20.05.2007 15:11
von PureBasic4.0
Ja, SQLiteInit() wurde ausgeführt (und abgefragt) hier der code:
Code: Alles auswählen
If Not SQLiteInit("")
MessageRequester("Fehler","Die Datei SQLite3.dll wurde nicht gefunden. Bitte installieren Sie dieses Programm neu",#MB_ICONSTOP)
End
EndIf
erst mal danke für den code, ich werde den mal durcharbeiten
Verfasst: 20.05.2007 16:30
von PureBasic4.0
@Kiffi: Bei diesem Code gibt es natürlich keinen IMA. Packe doch mal die Funktionen in eine Procedure und rufe diese auf. sag mir, ob du einen IMA bekommen hast.
Verfasst: 20.05.2007 17:01
von Kiffi
PureBasic4.0 hat geschrieben:Bei diesem Code gibt es natürlich keinen IMA.

sach ich doch!
PureBasic4.0 hat geschrieben:Packe doch mal die Funktionen in eine Procedure und rufe diese auf. sag mir, ob du einen IMA bekommen hast.
brauch ich nicht. Ich programmiere grundsätzlich mit Prozeduren und habe
nur diesen Testcode nicht innerhalb einer solchen gepostet.
Aus diesem Grund würde das noch immer ohne IMA funktionieren, wenn ich
nun den Code in eine Prozedur packen würde.
Der Einfachheit halber würde ich deshalb vorschlagen, dass
Du einen
kurzen
und
lauffähigen Testcode erstellst und hier postest, anhand dessen man den
IMA nachvollziehen kann.
Grüße ... Kiffi
Verfasst: 20.05.2007 17:07
von PureBasic4.0
Hi, Kiffi
Der Code hier ist NICHT Lauffähig, weil IMA (basiert auf deinem Code von oben):
Code: Alles auswählen
XIncludeFile "sqlite.pbi"
Define.l Neu
Define.l i
Global dbHandler.l
Define.SQ3_TABLEMAP Table
#Database="D:\test.db"
SQLiteInit()
If FileSize(#Database) = -1 ; Datenbank noch nicht vorhanden?
Debug "Datenbank ist (noch) nicht vorhanden"
Neu = #True
Else
Debug "Datenbank ist bereits vorhanden"
Neu = #False
EndIf
dbHandler = SQLiteOpen(#Database) ; Neue Datenbank wird geöffnet / erstellt
If Not dbHandler
If Neu
MessageRequester("", "Datenbank konnte nicht erstellt werden")
Else
MessageRequester("", "Datenbank konnte nicht geöffnet werden")
EndIf
End
EndIf
If Neu
Debug "Tabelle mit Feldern wird erstellt..."
SQLiteExecute(dbHandler, "Create Table myTestTable (Field1, Field2, Field3)")
Debug "Testwerte einfügen..."
For i = 1 To 10
SQLiteExecute(dbHandler, "Insert Into myTestTable (Field1, Field2, Field3) Values ('Feld1 Wert" + Str(i) + "', 'Feld2 Wert" + Str(i) + "', 'Feld3 Wert" + Str(i) + "')")
Next
i=0
EndIf
Procedure Lesen()
Debug "Auslesen der Daten..."
SQLiteGetTable(dbHandler, "SELECT * FROM myTestTable", Table)
If Table
While SQLiteNextRow(Table)
i + 1 : Debug "Row " + Str(i) + ":"
While SQLiteNextCol(Table)
Debug SQLiteValue(Table)
Wend
Wend
SQliteFreeTable(Table)
EndIf
EndProcedure
lesen()
SQLiteClose(dbHandler)
SQLiteEnd()
Verfasst: 20.05.2007 17:14
von Kiffi
PureBasic4.0 hat geschrieben:Der Code hier ist NICHT Lauffähig, weil IMA
jetzt schon
Schau Dir mal in der Hilfe den Unterschied zwischen Define, Protected und
Global an.
Grüße ... Kiffi
Verfasst: 20.05.2007 17:18
von PureBasic4.0
wow, danke! hat funktioniert