Ich habe da ein kleines Problemchen mit UseSQLiteDatabase("sqlcipher.dll")
Sobald ich die DLL in mein Programm mit einbinde erhalte ich auf Testrechnern die Debugger Meldung, dass UseSQLiteDatabase() vor Benutzung eines Datenbankbefehls aufgerufen werden muss. Das ist aber der Fall (siehe code)
Code: Alles auswählen
;
UseSQLiteDatabase("sqlcipher.dll")
EnableExplicit
Define mydir.s, found.i,result.s
;
found = 0
ExamineDirectory(0,GetCurrentDirectory(),"*.db3")
While NextDirectoryEntry(0)
If DirectoryEntryType(0) = #PB_DirectoryEntry_File
If DirectoryEntryName(0) = "test.db3"
found = 1
EndIf
EndIf
Wend
FinishDirectory(0)
If found = 0
CreateFile(0,"test.db3")
CloseFile(0)
EndIf
;
If OpenDatabase(0,"test.db3","","",#PB_Database_SQLite)
DatabaseUpdate(0,"PRAGMA key = 'passkey';")
FinishDatabaseQuery(0)
If found = 0
DatabaseUpdate(0,"CREATE TABLE test (field1 INTEGER,field2 INTEGER);")
DatabaseUpdate(0,"INSERT INTO test (field1,field2) VALUES (1,1),(2,2),(3,3);")
DatabaseQuery(0,"SELECT * FROM test;")
While NextDatabaseRow(0)
result + GetDatabaseString(0,DatabaseColumnIndex(0,"field1")) + " , " + GetDatabaseString(0,DatabaseColumnIndex(0,"field2")) + Chr(10)
Wend
FinishDatabaseQuery(0)
MessageRequester("Hinweis",result)
Else
DatabaseQuery(0,"SELECT * FROM test;")
While NextDatabaseRow(0)
result + GetDatabaseString(0,DatabaseColumnIndex(0,"field1")) + " , " + GetDatabaseString(0,DatabaseColumnIndex(0,"field2")) + Chr(10)
Wend
FinishDatabaseQuery(0)
MessageRequester("Hinweis",result)
EndIf
Else
MessageRequester("Hinweis","Open Error: " + DatabaseError())
EndIf
CloseDatabase(0)
;
; Remark
; Development system: Win11 22H2 / x64
; Test system: WIN11 22H2 / x64 (different from Development System)
; Test system: Win10 22H2 / x64
Hab ich da was übersehen?
PS: ohne Einbindung der "sqlcipher.dll" in UseSQLiteDatabase() funktioniert das Programm, jedoch nur ohne Verschlüsselung.