В чем преимущество использования sqlite3_data_count () по сравнению с sqlite3_column_count () в SQLite C API? - PullRequest
3 голосов
/ 09 февраля 2010

После прочтения документации кажется, что функция sqlite3_column_count делает все то же самое, но не имеет ограничений, которые имеет sqlite3_data_count.

Зачем мне использовать sqlite3_data_count вместо sqlite3_column_count? спасибо!

Ответы [ 2 ]

12 голосов
/ 09 февраля 2010

Я посмотрел источники двух функций:

/*
** Return the number of columns in the result set for the statement pStmt.
*/
SQLITE_API int sqlite3_column_count(sqlite3_stmt *pStmt){
  Vdbe *pVm = (Vdbe *)pStmt;
  return pVm ? pVm->nResColumn : 0;
}

/*
** Return the number of values available from the current row of the
** currently executing statement pStmt.
*/
SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt){
  Vdbe *pVm = (Vdbe *)pStmt;
  if( pVm==0 || pVm->pResultSet==0 ) return 0;
  return pVm->nResColumn;
}

Теперь понятно, в чем разница, поэтому NickD был прав.

Кстати, документация ужасна: "sqlite3_data_count (P) количество столбцов в наборе результатов подготовленного оператора P." Это даже не правильный английский, комментарии, которые приходят с определениями функций намного лучше.

4 голосов
/ 09 февраля 2010

sqlite3_data_count возвращает количество значений (столбцов) текущего выполняемого оператора. Без результатов возвращает 0.

sqlite3_column_count, с другой стороны, всегда возвращает количество столбцов с результатами или без.

Какой из них вы будете использовать, зависит от того, должны вы получить количество столбцов или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...