Ich würde gerne Datensätze aus einer Datenbank lesen und diese in der main Funktion weiter bearbeiten, also ich möchte nicht der callback funktion arbeiten.
Jetzt habe ich im Internet ein Beispiel gefunden:
#include <stdio.h> #include <stdlib.h> #include "sqlite3.h" typedef struct sqlite_vm sqlite_vm; int sqlite_compile( sqlite3 *db, /* The open database */ const char *zSql, /* SQL statement to be compiled */ const char **pzTail, /* OUT: uncompiled tail of zSql */ sqlite_vm **ppVm, /* OUT: the virtual machine to execute zSql */ char **pzErrmsg /* OUT: Error message. */ ); int sqlite_step( sqlite_vm *pVm, /* The virtual machine to execute */ int *pN, /* OUT: Number of columns in result */ const char ***pazValue, /* OUT: Column data */ const char ***pazColName /* OUT: Column names and datatypes */ ); int sqlite_finalize( sqlite_vm *pVm, /* The virtual machine to be finalized */ char **pzErrMsg /* OUT: Error message */ ); int main(int argc, char **argv){ sqlite3 *db; /*Datenbank-Objekt*/ sqlite_vm *dbcursor; char *dberr = 0; /*Fehlermeldungen*/ char *sql, *sqltail; /*SQL-Kommandos*/ /* * Datenbankdatei öffnen */ if(!sqlite3_open("test2.s3db", &db)){ printf("Hoppla: %sn", dberr); free(dberr); return 1; } /* * Beispiel für Select-Statement */ sql = "SELECT * FROM Mitarbeiter"; /* Lege Statement-Cursor an (Konstruktor) */ if(SQLITE_OK != sqlite_compile(db, sql, &sqltail, &dbcursor, &dberr)) { //Zeile 48 printf("Oha: %sn", dberr); free(dberr); }else{ int ncols; /*Anzahl zurückgegebener Spalten*/ char **colnames; /*Spaltennamen*/ char **values; /*Spalteninhalte*/ /* arbeite Ergebnis mit Cursor ab */ while (SQLITE_ROW == sqlite_step(dbcursor, &ncols, &values, &colnames)) { //Zeile 57 printf("nr='%s', name='%s'n", values[0], values[1]); } } /* * Datenbank schließen */ sqlite3_close(db); return 0; }
Aber wenn ich den Code Compilieren möchte bekomme ich folgende Fehler:
E:\Daten\Dokumente\.Dokumente\Projekte\CodeBlocks\sqlite2\main.cpp:: In function `int main(int, char**)': E:\Daten\Dokumente\.Dokumente\Projekte\CodeBlocks\sqlite2\main.cpp:48: error: invalid conversion from `char**' to `const char**' E:\Daten\Dokumente\.Dokumente\Projekte\CodeBlocks\sqlite2\main.cpp:48: error: initializing argument 3 of `int sqlite_compile(sqlite3*, const char*, const char**, sqlite_vm**, char**)' E:\Daten\Dokumente\.Dokumente\Projekte\CodeBlocks\sqlite2\main.cpp:57: error: invalid conversion from `char***' to `const char***' E:\Daten\Dokumente\.Dokumente\Projekte\CodeBlocks\sqlite2\main.cpp:57: error: initializing argument 3 of `int sqlite_step(sqlite_vm*, int*, const char***, const char***)' E:\Daten\Dokumente\.Dokumente\Projekte\CodeBlocks\sqlite2\main.cpp:57: error: invalid conversion from `char***' to `const char***' E:\Daten\Dokumente\.Dokumente\Projekte\CodeBlocks\sqlite2\main.cpp:57: error: initializing argument 4 of `int sqlite_step(sqlite_vm*, int*, const char***, const char***)' :: === Build finished: 6 errors, 0 warnings ===
Dieser Beitrag wurde von lord_fritte bearbeitet: 03. Oktober 2007 - 17:56