5

sqlite3_get_table以下のように定義されます:

int sqlite3_get_table(
  sqlite3 *db,          /* An open database */
  const char *zSql,     /* SQL to be evaluated */
  char ***pazResult,    /* Results of the query */
  int *pnRow,           /* Number of result rows written here */
  int *pnColumn,        /* Number of result columns written here */
  char **pzErrmsg       /* Error msg written here */
);

ドキュメントに記載されているように、便利な結果テーブルを取得でき、sqlite3_exec()のラッパーとして実装されます。

ただし、現在は推奨されていません。

これは、下位互換性のために保持されているレガシーインターフェイスです。このインターフェースの使用は推奨されません。

ただし、を使用する場合はsqlite3_exec、追加のコールバック関数を作成する必要があります。もっと複雑です。</p>

だから私の質問は、このインターフェースの主な問題は何ですか?なぜ非推奨にする必要があるのですか?

詳細については、http://www.sqlite.org/c3ref/free_table.htmlを参照してください。

4

1 に答える 1

5

問題sqlite3_get_tableは、すべての値が文字列に変換されることと、すべての結果レコードにメモリを割り当てる必要があることです。

sqlite3_prepare_v2 / sqlite3_step / sqlite3_column_xxx / sqlite3_finalize関数を使用することになっています。

于 2013-02-28T09:15:36.750 に答える