Seite 1 von 1

Fehlermeldung bei Verwendung einer externen sqlite3.dll

Verfasst: 07.12.2020 10:19
von Purethom
Hallo PureBasic-Gemeinde,

ich habe ein Problem bei der Verwendung einer externen sqlite3.dll. Zu Testzwecken habe ich den Example-Code aus der PB-Hilfe verwendet.

Code: Alles auswählen

UseSQLiteDatabase("sqlite3.dll")

  Filename$ = OpenFileRequester("Wähle einen Dateinamen", "PureBasic.sqlite", "*.sqlite|*.sqlite", 0)

  If CreateFile(0, Filename$)
    Debug "Datenbank-Datei erstellt"
    CloseFile(0)
  EndIf
  
  If OpenDatabase(0, Filename$, "", "")
    Debug "Verbunden mit PureBasic.sqlite"
    If DatabaseUpdate(0, "CREATE TABLE info (test VARCHAR(255));")
      Debug "Tabelle erstellt"
    EndIf
  EndIf
Die externe sqlite3.dll liegt in selben Verzeichnis wie der Quellcode. Das Programm läuft auch gut durch, aber zum Schluss bekomme ich folgende Fehlermeldung:

[08:59:23] Warte auf den Start des Executable...
[08:59:23] Executable-Typ: Windows - x64 (64bit, Unicode)
[08:59:23] Executable gestartet.
[08:59:34] [ERROR] pbExterneSQLiteDllTest.pb (Zeile: 16)
[08:59:34] [ERROR] Ungültiger Speicherzugriff. (Schreibfehler an der Adresse 6442455800)

Bei Verwendung der internen sqlite3-Funktionalität gibt es keine Probleme.
Was mache ich falsch?

Vielen Dank im Voraus und liebe Grüße sendet

Thomas

Re: Fehlermeldung bei Verwendung einer externen sqlite3.dll

Verfasst: 07.12.2020 10:28
von Kiffi
Purethom hat geschrieben:Die externe sqlite3.dll liegt in selben Verzeichnis wie der Quellcode.
Schuss in's Blaue:

Das hier auch angehakt?

Bild

Re: Fehlermeldung bei Verwendung einer externen sqlite3.dll

Verfasst: 07.12.2020 10:50
von Purethom
Hallo Kiffi,

war nicht angehakt, jetzt schon. Aber leider keine Veränderung.

LG

Thomas

Re: Fehlermeldung bei Verwendung einer externen sqlite3.dll

Verfasst: 07.12.2020 13:25
von HeX0R
CloseDataBase()

Re: Fehlermeldung bei Verwendung einer externen sqlite3.dll

Verfasst: 07.12.2020 13:35
von Kiffi
HeX0R hat geschrieben:CloseDataBase()
gnaaa... 9 Minuten zu spät.

Re: Fehlermeldung bei Verwendung einer externen sqlite3.dll

Verfasst: 07.12.2020 14:48
von Purethom
Danke HeXOR und Kiffi,

so geht's. Keine Fehlermeldung mehr. Hätte ich das irgendwo erlesen können? Anscheinend ist CloseDataBase() bei der internen sqlite3-Funktionalität nicht wirklich erforderlich. In der Hilfe zu CloseDateBase() steht:

Anmerkungen
Alle noch offenen Datenbanken werden automatisch geschlossen, wenn das Programm endet.

Also nochmals herzlichen Dank für eure Hilfe!

LG

Thomas

Re: Fehlermeldung bei Verwendung einer externen sqlite3.dll

Verfasst: 08.12.2020 12:03
von Benubi
Könnte ein Bug oder Glitch sein. Ich könnte mir vorstellen, daß das Update nebenläufig noch ausgeführt wird wenn das Programm beendet. Dann wird irgendetwas Benutztes freigegeben, wo ein normales CloseDatabase() erst einmal abgewartet hätte. Passiert etwas anders wenn Du statt CloseDatabase() ein Delay(10) machst?

Nun jedenfalls sollte man immer alles schließen was man öffnet - mache ich aber auch nicht immer >:)