Apenas para super noobs como eu, me perguntando como ou o que as pessoas queriam dizer com
PRAGMA table_info('table_name')
Você deseja usar isso como sua declaração de preparação, como mostrado abaixo. Fazer isso seleciona uma tabela com esta aparência, exceto que é preenchida com valores pertencentes à sua tabela.
cid name type notnull dflt_value pk
---------- ---------- ---------- ---------- ---------- ----------
0 id integer 99 1
1 name 0 0
Onde id e nome são os nomes reais de suas colunas. Portanto, para obter esse valor, você precisa selecionar o nome da coluna usando:
//returns the name
sqlite3_column_text(stmt, 1);
//returns the type
sqlite3_column_text(stmt, 2);
O que retornará o nome da coluna da linha atual. Para pegar todos eles ou encontrar o que você deseja, você precisa percorrer todas as linhas. A maneira mais simples de fazer isso seria da maneira abaixo.
//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
, consulte esta pergunta e resposta para uma simples lista de nomes de coluna ou um presente para a migração questões.