2011-07-04 60 views
1

我使用Ansi C和sqlite3_get_table;一切正常,除非我無法訪問作爲指向數組的指針傳遞的查詢結果向量。這是我的代碼...從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]?謝謝。

+0

您知道這隻適用於小型表格,而對於大型表格,您最好手動進行查詢,以便您可以一步一步地完成該操作。 –

回答

2

我覺得這片:

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

是造成你的問題。你也可以嘗試

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

+1:另一個可能的問題是值是UTF-8,但我認爲這不太可能。 –

+0

fyr。答對了!循環是你所建議的問題,而不是變量。我改變了測試只LT,它的工作。謝謝。 – MonkeyBusiness

1

你應該檢查由sqlite3_get_table返回的值是SQLITE_OK;如果不是,則訪問結果表並不安全。

您還應該知道,這是一個deprecated API。你應該添加一個電話sqlite3_free_table釋放內存;現在你似乎有內存泄漏(或者你已經這樣做了,但拒絕向我們顯示)。

+0

好的建議。我只顯示了我認爲與問題相關的代碼,但我確實忘記了free_table。謝謝。 – MonkeyBusiness