|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
asw
Anmeldungsdatum: 23.04.2008 Beiträge: 2
|
Verfasst am: 23.04.2008, 11:25 Titel: SQLite -- hilfe |
|
|
Hallo, ich suche nur einen Beispiel von SQLite mit FB.
Meiner Versuch war erfolglos:
Code: | #INCLUDE "sqlite3.bi"
Function callme Cdecl (Byval usr As Any Ptr, Byval argc As Integer, Byval argv As Zstring Ptr Ptr, Byval colname As Zstring Ptr Ptr) As Integer
For i As Integer = 0 To argc
Print *colname[i]; " = ";
If *argv[i]<>"" Then Print *argv[i] Else Print "Null"
Next i
Return 0
End Function
Dim db As sqlite3 Ptr
db = Allocate(Sizeof(sqlite3))
Dim rc As Integer
Dim fn As Zstring*30
Dim sel As Zstring*200
Dim zErrMsg As Zstring Ptr Ptr
zErrMsg = Callocate(10*Sizeof(Zstring Ptr))
Dim callb As Function(Byval usr As Any Ptr, Byval argc As Integer, Byval argv As Zstring Ptr Ptr, Byval colname As Zstring Ptr Ptr) As Integer
callb = @callme
Input "Database file";fn
rc = sqlite3_open(fn, db)
If rc Then
Print "Error opening database: ";sqlite3_errmsg(db)
sqlite3_close(db)
End
End If
Input "Select statement";sel
rc = sqlite3_exec(db, sel, callb, 0, zErrMsg)
If rc Then
Print "SQL error: ";*zErrMsg[0]
sqlite3_free(zErrMsg)
End If
sqlite3_close(db)
Deallocate zErrMsg
Sleep
End
|
Das Problem ist sqlite3_exec, nicht callme oder callb, aber was ist denn los? |
|
Nach oben |
|
|
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 23.04.2008, 22:33 Titel: |
|
|
Hi,
schau dir mal das Beispiel ...\examples\libraries\DB\sqlite3_test.bas in deinem Freebasic-Verzeichnis an.
Die Definitionen deiner Übergabeparameter in 'sqlite3_exec(db, sel, callb, 0, zErrMsg)' sind schon etwas seltsam.
versuch es mal so:
Code: | #Include "sqlite3.bi"
Function callme Cdecl (ByVal usr As Any Ptr, ByVal argc As Integer, _
ByVal argv As ZString Ptr Ptr, ByVal colname As ZString Ptr Ptr) As Integer
For i As Integer = 0 To argc
Print *colname[i]; " = ";
If *argv[i]<>"" Then Print *argv[i] Else Print "Null"
Next i
Return 0
End Function
Dim db As sqlite3 Ptr
Dim rc As Integer
Dim fn As String
Dim sel As String
Dim zErrMsg As ZString Ptr
Input "Database file: ";fn
rc = sqlite3_open(fn, @db)
If rc Then
Print "ERROR opening database: ";sqlite3_errmsg(db)
sqlite3_close(db)
End
End If
Input "SELECT statement: ";sel
rc = sqlite3_exec(db, sel, @callme, 0, @zErrMsg)
If rc Then
Print "SQL ERROR: ";*zErrMsg
'sqlite3_free(zErrMsg)
End If
sqlite3_close(db)
Sleep
End |
EDIT/
asw hat Folgendes geschrieben: | The basic problem was nothing more than: Dim zErrMsg As Zstring Ptr Ptr which should have been Dim zErrMsg As Zstring Ptr. A couple of @ and * signs were missing as well. |
Na, da sind schon mehr Bugs beseitigt worden als ein paar @ und * - Zeichen.
db = Allocate(sizeof(sqlite3)) ??? _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
|
asw
Anmeldungsdatum: 23.04.2008 Beiträge: 2
|
Verfasst am: 25.04.2008, 05:45 Titel: |
|
|
Das war ein Missverstaendnis eines Ratschlages.
Mein Freebasic-Verzeichnis hat dieses Beispiel (sqlite3_test) nicht: ich hatte solch ein Beispiel gesucht. Die Definitionen sehen seltsam aus weil ich fast alles aufs Geratewohl probierte.
Danke fuer deine Hilfe. |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 25.04.2008, 09:47 Titel: |
|
|
dann hast du eine total veraltete freebasic-version (0.18.5 ist aktuell), ich hab hier alle beispiele. lade dir bitte eine aktuelle compilerversion runter. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
braesident
Anmeldungsdatum: 15.04.2008 Beiträge: 189 Wohnort: Berlin
|
Verfasst am: 23.10.2015, 10:47 Titel: |
|
|
Hallo Leute.
Ich hab mal eine Frage zu den SQLite Standarts.
Also die SQLite3_test.bas hab ich mir angesehen und auch die sqlite3.bi .
Ich kann nun eine Datenbank öffnen und lesen.
Mit 'sqlite3_open' lässt sich eine neue DB anlegen
und z.B. mit
Code: |
Const SQL_CREATE = "CREATE TABLE features(" + _
"ID INTEGER PRIMARY KEY AUTOINCREMENT, " + _
"PRODUKT TEXT NOT NULL, " + _
"MENGE INTEGER NOT NULL)"
Dim As String create = SQL_CREATE
sqlite3_exec( db, create, @callback, 0, @errMsg )
| kann ich eine neue Tabelle anlegen.
Doch wie kann ich nun ein Datensatz hinzufügen, bearbeiten, oder löschen
EDIT_1 hizufügen hab ich schonmal raus
Code: |
Dim As String insert = "INSERT INTO features(PRODUKT, MENGE) VALUES " + _
"('Lampen','3'), " + _
"('Schalter','101')"
sqlite3_exec( db, insert, @callback, 0, @errMsg )
|
|
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
|
Nach oben |
|
|
MOD Fleißiger Referenzredakteur
Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 23.10.2015, 21:26 Titel: |
|
|
Du könntest dir mdTypes ansehen, da gibt es auch was zu sqlite. |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|