SQLite restituisce un errore del tipo 'non esiste colonna: foo' se la tabella non contiene la colonna:
select foo from yourTable limit 1
inoltre è possibile ottenere la dichiarazione create-table:
select sql from sqlite_master where tbl_name = 'YourTableName'
e quindi analizzare il risultato, cercando il nome-colonna. Non conosco un modo elegante per interrogare l'elenco di colonne per una tabella specificata, sebbene possa esistere.
anche se si tenta di fare questo:
alter table YourTable add column foo {column-def whatever it is}
si ottiene un errore da SQLite se la colonna esiste già. Potresti intrappolare anche questo errore.
Infine si potrebbe fare questo:
select sql from sqlite_master
where tbl_name = 'YOURTABLE' and sql like '%"foo" CHAR%'; -- or whatever type
e se la tabella specificata contiene la colonna che è circondato da virgolette nella query, e con il tipo che hai specificato, si otterrà un risultato, altrimenti un set vuoto. La specifica del tipo di dati garantisce che la corrispondenza della sottostringa LIKE si verifichi sul nome di una colonna.
È possibile visualizzare le colonne della tabella utilizzando '.schema tableName' – krakover
@krakover Non è che una risposta? –
@goreSplatter A seconda di cosa sta cercando di ottenere. Ho spiegato come evitare il problema, non come risolverlo .. \ – krakover