Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

SQLite -- hilfe

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
asw



Anmeldungsdatum: 23.04.2008
Beiträge: 2

BeitragVerfasst am: 23.04.2008, 11:25    Titel: SQLite -- hilfe Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1874
Wohnort: D59192

BeitragVerfasst am: 23.04.2008, 22:33    Titel: Antworten mit Zitat

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. mit den Augen rollen

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.
lachen
Na, da sind schon mehr Bugs beseitigt worden als ein paar @ und * - Zeichen.

Kopf schütteln 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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
asw



Anmeldungsdatum: 23.04.2008
Beiträge: 2

BeitragVerfasst am: 25.04.2008, 05:45    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 25.04.2008, 09:47    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
braesident



Anmeldungsdatum: 15.04.2008
Beiträge: 189
Wohnort: Berlin

BeitragVerfasst am: 23.10.2015, 10:47    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 23.10.2015, 15:29    Titel: Antworten mit Zitat

Einfügen: https://www.sqlite.org/lang_insert.html
Bearbeiten: https://www.sqlite.org/lang_update.html
Löschen: https://www.sqlite.org/lang_delete.html

PS: es ist absolut sinnlos, sich an einen 7 Jahren alten Threadn ranzuhängen, der noch nicht mal was mit deinem Problem zu tun hat.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 23.10.2015, 21:26    Titel: Antworten mit Zitat

Du könntest dir mdTypes ansehen, da gibt es auch was zu sqlite.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz