sqlite3_bind_text - sqlite c++ пример



Почему интерфейс sqlite3_get_table в интерфейсе SQLite C не рекомендуется (1)

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 , мне нужно написать дополнительную функцию обратного вызова. Это сложнее.

Итак, мой вопрос в том, какова основная проблема этого интерфейса? Почему он должен быть устаревшим?

Для получения дополнительной информации см. Http://www.sqlite.org/c3ref/free_table.html .


Проблемы с sqlite3_get_table заключаются в том, что все значения преобразуются в строки, и эта память должна быть выделена для всех записей результатов.

Вы должны использовать функции sqlite3_prepare_v2 / sqlite3_step / sqlite3_column_xxx / sqlite3_finalize .





sqlite3