[gelöst] Problemchen mit sqlcipher.dll
Verfasst: 03.08.2023 16:10
Hi
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)
Erstaunlich ist nur, dass das Programm so auf dem Entwicklungsrechner funktioniert. Nur auf Drittrechnern nicht mehr. Egal ob Win 10 oder Win 11. Die "sqlcipher.dll" liegt dem Programm immer im gleichen Verzeichnis bei.
Hab ich da was übersehen?
PS: ohne Einbindung der "sqlcipher.dll" in UseSQLiteDatabase() funktioniert das Programm, jedoch nur ohne Verschlüsselung.
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.