Solo para súper novatos como yo preguntándome cómo o qué querían decir las personas con
PRAGMA table_info('table_name')
Desea usarlo como su declaración de preparación como se muestra a continuación. Al hacerlo, se selecciona una tabla que se ve así, excepto que se llena con valores pertenecientes a su tabla.
cid name type notnull dflt_value pk
---------- ---------- ---------- ---------- ---------- ----------
0 id integer 99 1
1 name 0 0
Donde id y name son los nombres reales de sus columnas. Entonces, para obtener ese valor, debe seleccionar el nombre de la columna utilizando:
//returns the name
sqlite3_column_text(stmt, 1);
//returns the type
sqlite3_column_text(stmt, 2);
Lo que devolverá el nombre de la columna de la fila actual. Para tomarlos todos o encontrar el que desea, debe recorrer todas las filas. La forma más sencilla de hacerlo sería de la siguiente manera.
//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
, vea esta pregunta y respuesta para obtener una lista simple de nombres de columna o esta para problemas de migración.