Seite 1 von 7

SQLite3 unter PB

Verfasst: 01.11.2004 12:00
von Kiffi
Hallo,

hier ist ein Stückchen Code, mit dem man SQLite3-Datenbanken unter PB
ansprechen kann. Die nötigen Infos habe ich mir aus dem englischen
Forum entliehen und ein wenig meinen Bedürfnissen angepasst; also nicht
wundern, wenn das ein oder andere bekannt vorkommt. ;)

An dieser Stelle noch mal vielen Dank an GPI für seinen 'CallCFunctionFast'-Tipp!

Grüße ... Kiffi

// EDIT 02.11.2005: Der hier vormals stehende Code wurde gelöscht, weil
er nicht mehr dem Stand der Dinge entspricht. Der jeweils neueste Code
befindet sich nun im PBOSL-Paket, das unter http://pbosl.purearea.net/
downloadbar ist.

Verfasst: 23.02.2005 22:12
von bluejoke
Hallo!

Mir ist aufgefallen, dass die Fehlermeldungen von SQLite nicht so ganz perfekt nach meinen Wunschvorstellungen arbeiten.
Ich fänds besser wenn z.B. SQLite3_Execute statt #False einen Errorcode zurückliefert, der dann mit einer Funktion in einen String umgewandelt werden kann. Eben so, wies in der Lib gelöst ist.

Simon

Verfasst: 26.02.2005 18:52
von bluejoke
Hi!

Noch was: Ich möchte gerne, eine DB, die in den Speicher geladen ist (über die Pack-Routinen von PB),, mit SQLite auslesen und bearbeiten.
Muss ich dazu die Datenbank erst aus dem Speicher fischen und in eine neue temporäre Datei schreiben, oder kann ich SQLite irgendwie auch die Speicheradresse mitteilen?

Danke
Simon

Verfasst: 24.04.2005 18:16
von Kiffi
Tach,

ich habe nun die SQLite3-Funktionalitäten ein wenig erweitert und in eine
UserLib gepackt. Ich würde mich freuen, wenn es der ein oder andere
gebrauchen kann.

Unten habe ich mal einen kleinen Beispielcode angehängt, der zeigt, wie
die Lib anzusprechen ist.

Wie gewohnt, gibt's noch keine Doku zur Lib :oops:

Ansonsten stehe ich konstruktiver Kritik positiv gegenüber.

Grüße ... Kiffi

// EDIT 02.11.2005: Der hier vormals stehende Code wurde gelöscht, weil
er nicht mehr dem Stand der Dinge entspricht. Der jeweils neueste Code
befindet sich nun im PBOSL-Paket, das unter http://pbosl.purearea.net/
downloadbar ist.

Verfasst: 24.04.2005 18:28
von Lukaso
*saug* :)

Werde sofort deine LIB ausprobieren :wink:

Danke :allright:

MFG Lukaso

Verfasst: 24.04.2005 18:57
von Andre
Vielleicht sollte nach einer gewissen Testphase hier im Forum die Lib auch bei den UserLibs auf PureArea.net gelistet werden ?

Gebt mir bitte Bescheid, wenns soweit sein soll.... andre -at- purebasic.com :)

Verfasst: 24.04.2005 19:13
von Kiffi
> Vielleicht sollte nach einer gewissen Testphase hier im Forum die Lib auch
> bei den UserLibs auf PureArea.net gelistet werden ?

gerne! Voraussetzung ist natürlich, dass viele Leute testen und testen und
testen...

... und natürlich mich im Fehlerfall informieren, damit ich die Bugs rausholen
kann.

> Gebt mir bitte Bescheid, wenns soweit sein soll

OK

Grüße ... Kiffi

Verfasst: 24.04.2005 22:39
von Lukaso
@Kiffi
Warum kann ich eigentlich nicht mit DBData die Einträge ausgeben? Der Befehl SQLite3_GetTable ist ja bei der Lib vorhanden!

Danke :allright:

Lukaso

Verfasst: 25.04.2005 00:00
von Kiffi
> Warum kann ich eigentlich nicht mit DBData die Einträge ausgeben?

es bleibt Dir überlassen, die Einträge mit DBData oder mit einem Recordset
auszugeben.

Für die Verwendung von DBData sehe ich den Nachteil, dass kurzzeitig der
doppelte Speicherplatz für ein SQL-Query-Ergebnis benötigt wird (der
allokierte Speicher + der Speicher für das Array, in das geschrieben wird).
Gerade bei grossen Resultsets kann das problematisch werden.

Die Recordset-Methode hat zudem den Vorteil, dass man Felder bei Bedarf
mit Namen ansprechen kann (wenn auch dieser Zugriff ein wenig
langsamer ist, als der Zugriff über Feld-Indizes).

Code: Alles auswählen

SQLite3_GetRecordsetValueByName("checksum", @RS)
Debug RS\sValue
Dem einen oder anderen, der vielleicht den Datenbankzugriff von VB
gewohnt ist, mag das mehr liegen.

Wie bereits erwähnt, ob DBData oder Recordset: Das kannst Du je nach
Geschmack entscheiden.

Grüße ... Kiffi

Verfasst: 26.04.2005 17:51
von Lukaso
@Kiffi
Danke für die Antwort :allright:

Habe allerdings noch eine Frage: Hat die LIB einen Befehl um die Anzahl der Ergebnisse einer Abfrage zu ermitteln?

Danke :allright:

Lukaso

EDIT: Hat sich erledigt!