Hallo Christian+, vielen Dank für Deine Umsetzung. Ich habe alle anderen
Funktionen ergänzt. Im Beispiel funktioniert auch alles, nur innerhalb
meines eigentlichen Programmes erhalte ich bei:
Code: Alles auswählen
Result = sqlite3_get_table (lDataBaseHandle, sSQLQuery, @lResultsPtr, @Rows, @Cols, @ReturnValue)
einen ungültigen Speicherzugriff.
Code: Alles auswählen
PrototypeC.i sqlite3_open(sDataBase.p-utf8, *lDataBaseHandle)
PrototypeC.i sqlite3_libversion()
PrototypeC.i sqlite3_get_table (lDataBaseHandle, sSQLQuery.p-utf8, *lResultsPtr, *Rows, *Cols, *ReturnValue)
PrototypeC.i sqlite3_exec (lDataBaseHandle, sSQLQuery.p-utf8, pCallback, Arg, *ReturnValue)
PrototypeC.i sqlite3_free_table (lResultsPtr)
PrototypeC.i sqlite3_close(lDataBaseHandle)
PrototypeC.i sqlite3_errmsg(*ReturnValue)
Global sqlite3_open.sqlite3_open
Global sqlite3_libversion.sqlite3_libversion
Global sqlite3_exec.sqlite3_exec
Global sqlite3_close.sqlite3_close
Global sqlite3_errmsg.sqlite3_errmsg
Global sqlite3_get_table.sqlite3_get_table
Global sqlite3_free_table.sqlite3_free_table
Global lDataBaseHandle
#SQLITE3_OK = 0 ; Successful Result
#SQLITE3_ERROR = 1 ; SQL error Or missing database
Procedure.l SQLite3_Init()
LibNr_SQlite3 = OpenLibrary(#PB_Any, "sqlite3.dll")
If LibNr_SQlite3
sqlite3_open = GetFunction(LibNr_SQlite3, "sqlite3_open")
sqlite3_libversion = GetFunction(LibNr_SQlite3, "sqlite3_libversion")
sqlite3_exec = GetFunction(LibNr_SQlite3, "sqlite3_exec")
sqlite3_close = GetFunction(LibNr_SQlite3, "sqlite3_close")
sqlite3_errmsg = GetFunction(LibNr_SQlite3, "sqlite3_errmsg")
sqlite3_get_table = GetFunction(LibNr_SQlite3, "sqlite3_get_table")
sqlite3_free_table = GetFunction(LibNr_SQlite3, "sqlite3_free_table")
ProcedureReturn #TRUE
Else
ProcedureReturn #False
EndIf
EndProcedure
Procedure.b SQLite3_OpenDatabase(sDataBase.s)
If sqlite3_open(sDataBase, @lDataBaseHandle) = #SQLITE3_OK ; <-- IMA
Debug sDataBase
ProcedureReturn #SQLITE3_OK
EndIf
EndProcedure
SQLite3_Init()
Debug SQLite3_OpenDatabase(":memory:" )
Debug SQLite3_GetVersion()
Debug sqlite3_exec (lDataBaseHandle, "CREATE TABLE TEST (ID INTEGER)", #Null, #Null, @ReturnValue)
Debug ReturnValue
If ReturnValue : Debug PeekS(ReturnValue) : EndIf
Debug sqlite3_exec (lDataBaseHandle, "INSERT INTO TEST (ID) VALUES(1)", #Null, #Null, @ReturnValue)
Debug sqlite3_exec (lDataBaseHandle, "INSERT INTO TEST (ID) VALUES(2)", #Null, #Null, @ReturnValue)
Debug sqlite3_exec (lDataBaseHandle, "INSERT INTO TEST (ID) VALUES(3)", #Null, #Null, @ReturnValue)
Debug sqlite3_get_table (lDataBaseHandle, "SELECT * FROM TEST", @lResultsPtr, @Rows, @Cols, @ReturnValue)
Debug ReturnValue
If ReturnValue : Debug PeekS(ReturnValue) : EndIf
Debug Rows
Debug Cols
Debug PeekS(lResultsPtr)