Just for Super noobs wie mich fragen, wie oder was bedeutete Menschen von
PRAGMA table_info('table_name')
Sie möchten das als Ihre prepare-Anweisung verwenden, wie unten gezeigt. Wenn Sie dies tun, wird eine Tabelle ausgewählt, die so aussieht, außer dass sie mit Werten gefüllt ist, die zu Ihrer Tabelle gehören.
cid name type notnull dflt_value pk
---------- ---------- ---------- ---------- ---------- ----------
0 id integer 99 1
1 name 0 0
Wo ID und Name die tatsächlichen Namen Ihrer Spalten sind. So bekommen Sie diesen Wert benötigen Sie Spaltennamen wählen, indem Sie:
//returns the name
sqlite3_column_text(stmt, 1);
//returns the type
sqlite3_column_text(stmt, 2);
, die die aktuelle Zeile der Spalte Name wird zurückkehren. Um sie alle zu finden oder die gewünschte zu finden, müssen Sie alle Zeilen durchlaufen. Der einfachste Weg wäre die unten beschriebene Vorgehensweise.
//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
}
}
Für den speziellen Fall von 'SQLite.swift' finden Sie unter [diese Frage und Antwort ] (http://stackoverflow.com/questions/36784596/how-to-get-a-list-of-column-names-with-sqlite-swift) für eine einfache Liste von Spaltennamen oder [diese] (http : //stackoverflow.com/a/29866725/3681880) für Migrationsprobleme. – Suragch