SQLite возвращает ошибку типа «нет такого столбца: foo», если таблица не содержит столбец:
select foo from yourTable limit 1
Также вы можете получить инструкцию create-table:
select sql from sqlite_master where tbl_name = 'YourTableName'
и затем проанализируйте результат, ища имя столбца. Я не знаю элегантного способа запроса списка столбцов для указанной таблицы, хотя он может существовать.
Также, если вы попытаетесь сделать это:
alter table YourTable add column foo {column-def whatever it is}
вы получаете сообщение об ошибке от SQLite, если столбец уже существует. Вы также можете перехватить эту ошибку.
Наконец вы можете сделать это:
select sql from sqlite_master
where tbl_name = 'YOURTABLE' and sql like '%"foo" CHAR%'; -- or whatever type
и если указанная таблица содержит столбец, который в запросе заключен в двойные кавычки, и с указанным вами типом, вы получите результат, в противном случае - пустой набор. Указание типа данных обеспечивает совпадение подстроки LIKE с именем столбца.