Дано:
- база данных sqlite с таблицей
T
- таблица
T
содержит 10 столбцов - C0
, C1
... C9
.
- указатель
sqlite3_stmt
, соответствующий select C3,C2 from T
ОК, так что я могу получить выбранные значения столбцов, используя семейство методов sqlite3_column_XXX
(http://www.sqlite.org/capi3ref.html#sqlite3_column_blob),, например:
sqlite3_stmt *s;
sqlite3_prepare_v2(db, query, sizeof(query), &s, NULL);
while ((result = sqlite3_step(s)) == SQLITE_ROW)
{
const char *v3 = reinterpret_cast<const char *>(sqlite3_column_text(s, 0);
const char *v2 = reinterpret_cast<const char *>(sqlite3_column_text(s, 1);
}
Мне нужен реальный индекс выбранных столбцов, то есть 3 для v3
и 2 для v2
.
Мотивация: Я хочу иметь возможность анализировать возвращаемое значение строки в реальном типе столбца. Действительно, моя схема говорит, что c3
- это datetime
, который sqlite трактует как TEXT
. Таким образом, sqlite3_column_type(s, 0)
возвращает SQLITE3_TEXT
, но метаданные таблицы (доступны из pragma table_info(T)
) сохраняют строку datetime
, которая является предполагаемым типом столбца. Зная это, я могу проанализировать возвращенную строку в соответствующее время Unix, начиная с эпохи, например.
Но как мне сопоставить индекс столбца запроса с индексом столбца таблицы:
- столбец запроса 0 -> столбец таблицы 3
- столбец запроса 1 -> столбец таблицы 2
Спасибо.