Вы можете использовать PRAGMA table_info(tablename);
, чтобы получить набор результатов, который включает имя и тип столбца для данной таблицы.
Вызовите прагму, как и обычный запрос (т. Е. С *Например, 1006 *).
Если вам нужна эта информация для оператора SQL, который вы не сгенерировали самостоятельно, и который содержит выбор столбца, вам нужно использовать подготовленный оператор (вы все равно должны это делать).Затем вы можете использовать sqlite3_column_count
и sqlite3_column_name
для получения информации, которую вы ищете.
Пример использования:
sqlite3_stmt *stmt;
rc = sqlite3_prepare_v2(db, "select a,b from t where 0=1", -1, &stmt, 0);
if( rc!=SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
int cols = sqlite3_column_count(stmt);
fprintf(stdout, "%d columns\n", cols);
for (int i=0; i<cols; i++)
fprintf(stdout, "%d. %s\n", i, sqlite3_column_name(stmt, i));
// iterate over the results with sqlite3_step
// dispose of the statement with sqlite3_finalize
Вы можете адаптировать это для хранения имен столбцов в std::vector
.