开发者

C++, SQLite - pointer to pointer to string

I work with C++ and SQLite3 (with Microsoft Visual C++ 2008) and would like to read a value from my database and store it in a variable to work with it on. The select statement works fine, but every time I viewed the callback function and try to read the value from char **argv, I get "only" the memory address, or the first ASCII character of the value, which is in the database. What am I doing wrong? Here is the callback function:

static int callback(void *pArg, int argc, char **argv, char **azColName)
{
fprintf(f, "Callback aufgerufen!\n");
int i;  

for(i=0; i<argc; i++)
{
    fprintf(f, azColName[i]);
    fprintf(f, " = ");
    if(argv[i]){
        fprintf(f, argv[i]);
        //unsigned int x = argv[i];
    }

    else
        fprintf(f, "NULL");
        fprintf(f, "\n");
 }
fprintf(f, "\n");
return 0;
}

I tried it without the callback function, but again I get the same result and I've tried different ways to store the value in a variable.

while (sqlite3_step(stmt) == SQLITE_ROW) 
{
    fprintf(f, "%s\n", sql开发者_JAVA百科ite3_column_text(stmt, 0));
//const unsigned char *c = sqlite3_column_text(stmt, 0);
fprintf(f, "%u\n", sqlite3_column_int(stmt, 0));
//unsigned int z = *sqlite3_column_int(stmt, 0);

stmt_count++;
}

Is it perhaps not possible to access the value or to store it in a variable?


I don't see why you need a callback - this should work (depending on the size of the data):

char myvalue[100];
while (sqlite3_step(stmt) == SQLITE_ROW) 
{
    strcpy( myvalue, (const char *) sqlite3_column_text(stmt, 0) );
    // do something with myvalue
    stmt_count++;
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜