SQLite3 unter PB

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

SQLite3 unter PB

Beitrag 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.
Zuletzt geändert von Kiffi am 02.11.2005 15:09, insgesamt 1-mal geändert.
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag 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
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag 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
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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.
Zuletzt geändert von Kiffi am 02.11.2005 15:10, insgesamt 1-mal geändert.
Benutzeravatar
Lukaso
Beiträge: 720
Registriert: 08.09.2004 18:51
Wohnort: Oberkirch
Kontaktdaten:

Beitrag von Lukaso »

*saug* :)

Werde sofort deine LIB ausprobieren :wink:

Danke :allright:

MFG Lukaso
Nextgen Guild Wars Fanseite: Guild Wars Tactics (Pseudo-Admin + Developer)
"Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht." - Unbekannter Autor
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag 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 :)
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
Benutzeravatar
Lukaso
Beiträge: 720
Registriert: 08.09.2004 18:51
Wohnort: Oberkirch
Kontaktdaten:

Beitrag 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
Nextgen Guild Wars Fanseite: Guild Wars Tactics (Pseudo-Admin + Developer)
"Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht." - Unbekannter Autor
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
Benutzeravatar
Lukaso
Beiträge: 720
Registriert: 08.09.2004 18:51
Wohnort: Oberkirch
Kontaktdaten:

Beitrag 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!
Nextgen Guild Wars Fanseite: Guild Wars Tactics (Pseudo-Admin + Developer)
"Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht." - Unbekannter Autor
Antworten