从Sqlite中的表中获取字符串值

时间:2016-02-18 09:08:39

标签: c sqlite

我有一个包含3列的表格。我需要按唯一ID选择记录并打印其他2条记录

我正在使用

 rs = get_result("SELECT sid FROM sdata WHERE sid='%s';",sid);

我能够得到结果集 - 我验证了这一点。

但这一行会产生错误

 printf(1,0,(unsigned char *)resultset.recordset[0][1],0);

这不是打印记录的正确方法。

更新:

我为嵌入式设备开发此内容并针对gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-gcc

进行交叉编译
resultset get_result(const char* fmt, ...)
{
    int success = 0;
    int nrow=0, ncol=0, i=0, j=0, count=0;
    char *err_messg;
    char **result;
    char ***recordset;
    resultset resultset_table;

    char sql_string[1500];//this honestly needs to be more elegant; will do for now
    va_list args;   
    va_start(args, fmt);
    sql_string[0] = '\0';
    ret = vsprintf(sql_string, fmt, args);
    va_end(args);   
    fprintf(stdout,"\n%s\n", sql_string);

    SQLITE = 1;

    //initialize resultset_table;
    resultset_table.rows = 0;
    resultset_table.cols = 0;
    resultset_table.recordset = NULL;

    ret = sqlite3_get_table(
                    db_conn,              
                    sql_string,
                    &result,
                    &nrow,
                    &ncol,
                    &err_messg
                );

    fprintf(stdout,"nrow=%d ncol=%d\n",nrow,ncol);

    recordset = (char ***)malloc(nrow * sizeof(char **));
    for(count=ncol; count<((nrow + 1)*ncol); count++)
    {
        recordset[i] = (char **)malloc(ncol * sizeof(char *));
        for(j=0; j<ncol; j++)
        {
            err_printf("%s ",result[count]);//
            recordset[i][j] = (char *) malloc( (strlen(result[count]) + 1) );
            strcpy(recordset[i][j], result[count]);

            if(j != (ncol - 1))
                count++;
        }
        i++;
        err_printf("\n");//
    }
    sqlite3_free_table(result);

    if( ret != SQLITE_OK )
    {
        fprintf(stdout,"SQL error: %s\n", err_messg);
        success = 0; 
        }

    else
    {
        resultset_table.rows = nrow;
        resultset_table.cols = ncol;
        resultset_table.recordset = recordset;
        success = 1;
    }

    SQLITE = 0;
    return resultset_table;
}

错误:  错误:结果集&#39;

之前的预期表达式

0 个答案:

没有答案