Просто для супер нубов, как я, интересно, как или что люди подразумевают под
PRAGMA table_info('table_name')
Вы хотите использовать его в качестве своего подготовительного заявления, как показано ниже. При этом выбирается таблица, которая выглядит следующим образом, за исключением того, что она заполнена значениями, относящимися к вашей таблице.
cid name type notnull dflt_value pk
---------- ---------- ---------- ---------- ---------- ----------
0 id integer 99 1
1 name 0 0
Где id и name - это фактические имена ваших столбцов. Таким образом, чтобы получить это значение, вам нужно выбрать имя столбца, используя:
//returns the name
sqlite3_column_text(stmt, 1);
//returns the type
sqlite3_column_text(stmt, 2);
Который будет возвращать имя столбца текущей строки. Чтобы захватить их все или найти тот, который вам нужен, вам нужно перебрать все строки. Простейший способ сделать это будет следующим образом.
//where rc is an int variable if wondering :/
rc = sqlite3_prepare_v2(dbPointer, "pragma table_info ('your table name goes here')", -1, &stmt, NULL);
if (rc==SQLITE_OK)
{
//will continue to go down the rows (columns in your table) till there are no more
while(sqlite3_step(stmt) == SQLITE_ROW)
{
sprintf(colName, "%s", sqlite3_column_text(stmt, 1));
//do something with colName because it contains the column's name
}
}
SQLite.swift
см. Этот вопрос и ответ для простого списка имен столбцов или этот для проблем миграции.