2011-07-04 6 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) 

はあなたの問題を引き起こしています。また、あなたがsqlite3_get_tableによって返された値がSQLITE_OKであることを確認する必要があり

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

+1:他の漠然と考えられる問題は、値がUTF-8だということですが、それは起こりそうにないと思います。 –

+0

fyr。ビンゴ!あなたが提案したようにループは問題でした。変数ではありませんでした。私はテストをLTに変更し、それは働いた。ありがとう。 – MonkeyBusiness

1

を試してみました。結果テーブルにアクセスできない場合は、結果テーブルにアクセスすることは安全ではありません。

これはdeprecated APIであることにも注意してください。また、メモリを解放するにはsqlite3_free_tableへの呼び出しを追加する必要があります。今すぐあなたはメモリリークを持っているようです(またはあなたはすでにそれをしていますが、私たちを示すことは拒否しました)。

+0

良い提案。問題に関連していると思ったコードだけを示したが、私はfree_tableを忘れてしまった。ありがとう。 – MonkeyBusiness

関連する問題