Funktionreferenz


_SQLite_Open

Beschreibung anzeigen in

Öffnet/Erstellt eine SQLite-Datenbank

#include <SQLite.au3>
_SQLite_Open ( [$sDatabase_Filename = ":memory:" [, $iAccessMode = Default [, $iEncoding = $SQLITE_ENCODING_UTF8]]] )

Parameter

$sDatabase_Filename [optional] Dateiname der Datenbank. Bei Standard wird eine Datenbank im Arbeitsspeicher geöffnet.
$iAccessMode [optional] Zugriffsmodusflags. Standard sind: $SQLITE_OPEN_READWRITE + $SQLITE_OPEN_CREATE
$iEncoding [optional] encoding Modusflag, wird nur am Anfang verwendet. Standard sind: $SQLITE_ENCODING_UTF8

Rückgabewert

Erfolg: das Datenbank-Handle
Fehler: 0
@error: -1 - SQLite hat einen Fehler festgestellt (überprüfe @extended-Wert)
1 - Fehler beim Aufrufen von SQLite API 'sqlite3_open_v2'
2 - Fehler beim konvertieren das Dateinamens in UTF-8
3 - _SQLite_Startup() wurde zuvor nicht aufgerufen
@extended: Der Wert kann mit den $SQLITE_* Konstanten verglichen werden

Bemerkungen

Die SQLite-Dateien können von https://www.autoitscript.com/autoit3/pkgmgr/sqlite heruntergeladen werden. Abgespeichert können diese in @ScriptDir, @SystemDir, @WindowsDir oder @WorkingDir werden.

Es ist nicht notwendig das Datenbanken-Handle zu speichern, außer wenn mehr als eine Datenbank in derselben Session benutzt werden. Funktionen, die das Handle benutzen, rufen bei Standard die zuletzt geöffnete Datenbank auf.

Um eine in UFT16 kodierte Datenbank zu erstellen, muss beim Erstellen nur $iEncoding = $SQLITE_ENCODING_UTF16 verwendet werden.

In-Memory, temporäre und permanente Datenbanken können wie folgt geöffnet werden:
$hDb = _SQLite_Open() ; öffnet eine temporäre private In-Memory-Datenbank.
$hDb = _SQLite_Open(Default, ...) ; dito
$hDb = _SQLite_Open(':memory:', ...) ; dito

$hDb = _SQLite_Open('', ...) ; öffnet eine temporäre private On-Disk-Datenbank.

$hDb = _SQLite_Open('abc.db', ...) ; öffnet oder erstellt eine permanente gemeinsam nutzbare On-Disk-Datenbank namens 'abc.db'

Für Selbstverwirrung:
$hDb = _SQLite_Open('./:memory:', ...) ; öffnet oder errstellt eine permanente gemeinsam nutzbare On-Disk-Datenbank namens ':memory:'

Im Gegensatz zu permanenten disk-basierten Datenbanken können In-Memory und temporäre Datenbanken weder gemeinsam, noch für IPC (Interprozesskommunikation) benutzt werden. Sie werden nach Verbindungsende gelöscht.

Verwandte Funktionen

_SQLite_Close

Beispiel

#include <File.au3>
#include <MsgBoxConstants.au3>
#include <SQLite.au3>
#include <SQLite.dll.au3>

_SQLite_Startup()
If @error Then
    MsgBox($MB_SYSTEMMODAL, "SQLite Error", "SQLite3.dll kann nicht geladen werden!")
    Exit -1
EndIf
ConsoleWrite("_SQLite_LibVersion=" & _SQLite_LibVersion() & @CRLF)

_SQLite_Open() ; Erstellt eine :memory: Datenbank im Arbeitsspeicher ohne ihr Handle zu verwenden
If @error Then
    MsgBox($MB_SYSTEMMODAL, "SQLite Error", "Kann keine Datenbank im Speicher erstellen!")
    Exit -1
EndIf
_SQLite_Close()

Local $hMemDb = _SQLite_Open() ; Erstellt eine :memory: Datenbank im Arbeitsspeicher
If @error Then
    MsgBox($MB_SYSTEMMODAL, "SQLite Error", "Kann keine Datenbank im Speicher erstellen!")
    Exit -1
EndIf

Local $hTmpDb = _SQLite_Open('') ; Erstellt eine temporäre Datenbank auf der Festplatte
If @error Then
    MsgBox($MB_SYSTEMMODAL, "SQLite Error", "Kann keine temporäre Datenbank erstellen!")
    Exit -1
EndIf

Local $sDbName = _TempFile()
Local $hDskDb = _SQLite_Open($sDbName) ; Erstellt eine permanente Datenbank auf der Festplatten
If @error Then
    MsgBox($MB_SYSTEMMODAL, "SQLite Error", "Kann keine permanente Datenbank erstellen!")
    Exit -1
EndIf

; Es ist auch möglich die 3 Datenbanken nach Bedarf über ihr Handle zu benutzen

; Schließt die erstellten Datenbanken, in beliebiger Reihenfolge
_SQLite_Close($hTmpDb) ; Temporäre Datenbanken werden automatisch durch Close gelöscht
_SQLite_Close($hDskDb) ; Die Datenbank ist eine gewöhnliche Datei die jederzeit wieder geöffnet werden kann
_SQLite_Close($hMemDb)

; Diese Datenbank wird nicht mehr gebraucht
FileDelete($sDbName)

_SQLite_Shutdown()