从sqlite3_get_table访问结果数组

时间:2011-07-04 05:48:34

标签: c sqlite

我正在使用Ansi C和sqlite3_get_table;一切正常,除了我无法访问作为指向数组的指针传递的查询结果向量。这是我的代码......

char **sql_results;

sqlite3_get_table(open_database, sql_query,
        &sql_results, &RecordCount, &ColumnCount, &error_msg);

for (int i = 0; i <= (RecordCount + 1)* (ColumnCount); i++)
    printf("%10d %10s\n",i, sql_results[i]);  //get "EXC BAD ACCESS" message

如何修复sql_results[i]?感谢。

2 个答案:

答案 0 :(得分:2)

我认为这篇文章:

i <= (RecordCount + 1)* (ColumnCount)

导致你的问题。你也试过吗

i < (RecordCount + 1)* (ColumnCount)

答案 1 :(得分:1)

您应该检查sqlite3_get_table返回的值是否为SQLITE_OK;如果不是,则访问结果表是不安全的。

您还应该知道这是一个deprecated API。你应该添加一个sqlite3_free_table的调用来释放内存;现在你似乎有内存泄漏(或者你已经这样做了,但拒绝向我们展示)。