Announcement

Collapse
No announcement yet.

C++ und sqlite3

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

  • C++ und sqlite3

    Hallo ich versuche mich gerade an sqlite3 mit C++, nur bin ich jetzt auf ein Problem gestoßen.
    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:
    PHP Code:
    #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 argcchar **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(dbsql, &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:
    Code:
    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 ===

  • #2
    Welches könnte die Zeile 48 sein?
    Christian

    Comment

    Working...
    X