Announcement

Collapse
No announcement yet.

Probleme mit sqlite3_exec

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Probleme mit sqlite3_exec

    Um hier mal noch eine Frage hinterher zu schieben, die zwar nichts mehr mit dem ursprünglichen post zu tun hat, aber mit SQlite...denn da sitze ich gerade vor nem Problem...und ich glaube die Lösung ist viel einfacher als ich denke...ich find sie nur nicht.

    Langer Rede kurzer Sinn:

    Ich verwende die SQlite DB mit einem C/C++-Programm. Das Erstellen und füllen der DB ist kein Problem, allerdings bei Abfragen stoße ich auf ein Rätsel.

    Die Funktion sqlite3_exec(...) liefert nämlich nicht wie erst gedacht das Abfrage-Resultat als Rückgabewert, sondern lediglich einen "Fehlercode". Aber wie komme ich nun an mein Abfrageergebnis wenn ich die Funktion bspw. wie folgt aufrufe:

    Code:
    if (sqlite3_exec(test_db, "SELECT * FROM name", NULL, 0, &strMsg) != SQLITE_OK) {
      // Fehlermeldung
    } else {
      // verarbeite Response
    }
    Ich hab mittlerweile die "Möglichkeit" gefunden den Output von SQlite in ne Datei umzulenken mittels

    Code:
    .output datei.txt
    aber schön finde ich diese Lösung ganz und gar ned.

    Leider habe ich auch noch kein Tutorial oder sonstiges gefunden, das mir meine Frage beantwortet...-.-

    Hoffe hier hat jemand einen heißen Tipp für mich parat...ich hoffe ja mal, dass ich nur irgendwas übersehen habe.

    Danke schonmal und Gruß
    Alex
    Zuletzt editiert von mb0156ba; 26.04.2007, 13:09.

  • #2
    Hab den Beitrag mal als neuen Thread anlegegt.
    Hat ja nichts mehr mit SQlite und varchar(n) zu tun.

    Neue Frage -> Neuer Thread.

    Comment


    • #3
      Hallo mal wieder,

      nachdem ich nun die ersten Hürden von SQlite (in Verbindung mit C++) gemeistert habe und nun auch herausgefunden habe, dass die Antworten der SELECT-Statements mittels der anzugebenden Callback-Funktion/en verarbeitet wird, stehe ich vor einem neuen kleinen Rätsel.

      Habe eine Klasse als DBHandler, welche die entsprechende Funktion selectCallback als private Member-Funktion enthält:

      Code:
      	int		selectCallback(void *p_Daten, int iAnzahlFelder, char **p_Felder, char **p_SpaltenNamen);
      Allerdings meckert der Kompiler beim Übersetzen, dass:

      Code:
      error C2664: 'sqlite3_exec' : cannot convert parameter 3 from 'int (void *,int,char ** ,char ** )' to 'int (__cdecl *)(void *,int,char ** ,char ** )'
      Wenn ich die Funktion nicht als Member-Funktion deklariere, sondern lokal im cpp-File, dann funktioniert das Übersetzen problem- und fehlerfrei.

      Nun die Frage:
      Wieso kommt der mit der Deklaration als Class-Member-Funktion nicht klar? Oder habe ich etwas anderes nicht bedacht, bzw. übersehen?

      Ich hoffe, dass dieses Thema (geht ja immernoch um die sqlite3_exec(...) zu tun) nicht auch in nen neuen Thread sollte. Und, dass ich im SQL-bereich auch richtig bin, ist ja immerhin ne halbe C++-Frage *find*.

      Andernfalls bitte ich dies zu entschuldigen und hoffe, dass die Mods nochmal so gnädig sind meinen Post entsprechend zu verschieben (oder auch nach C++ zu verlinken).

      Ähm, bevor ichs vergesse: Entwickelt wird mit dem "alten" MS Visual Studio 6 (SP5), falls das irgendwie weiter hilft...

      Danke und Gruß
      Alex

      Comment

      Working...
      X