Tylko dla super noobów, takich jak ja, zastanawiających się, jak i co ludzie mieli na myśli
PRAGMA table_info('table_name')
Chcesz użyć tego jako wyciągu przygotowawczego, jak pokazano poniżej. W ten sposób wybiera się tabelę, która wygląda tak, z wyjątkiem tego, że jest zapełniana wartościami odnoszącymi się do tabeli.
cid name type notnull dflt_value pk
---------- ---------- ---------- ---------- ---------- ----------
0 id integer 99 1
1 name 0 0
Gdzie id i nazwa to rzeczywiste nazwy twoich kolumn. Aby uzyskać tę wartość, musisz wybrać nazwę kolumny, używając:
//returns the name
sqlite3_column_text(stmt, 1);
//returns the type
sqlite3_column_text(stmt, 2);
Co zwróci nazwę kolumny bieżącego wiersza. Aby złapać je wszystkie lub znaleźć ten, który chcesz, musisz iterować przez wszystkie rzędy. Najprostszym sposobem na to byłoby w następujący sposób.
//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
zapoznać się z konkretnym przypadkiem , zobacz to pytanie i odpowiedź, aby uzyskać prostą listę nazw kolumn lub tę dotyczącą problemów z migracją.