Используйте следующую функцию для проверки существования столбца.Практически не проверено, поэтому вам, возможно, придется проверить синтаксис.Концепция похожа на то, что если вы в состоянии создать подготовленное утверждение, то столбец существует иначе.
-(BOOL)checkColumnExists
{
BOOL columnExists = NO;
sqlite3_stmt *selectStmt;
const char *sqlStatement = "select yourcolumnname from yourtable";
if(sqlite3_prepare_v2(yourDbHandle, sqlStatement, -1, &selectStmt, NULL) == SQLITE_OK)
columnExists = YES;
return columnExists;
}
Swift 3.2:
private func tableHasColumn(db: OpaquePointer, tableName: String, columnName: String) -> Bool {
var retVal = false
var tableColumnsQueryStatement: OpaquePointer? = nil
if sqlite3_prepare_v2(db, "PRAGMA table_info(\(tableName));",
-1,
&tableColumnsQueryStatement,
nil) == SQLITE_OK {
while (sqlite3_step(tableColumnsQueryStatement) == SQLITE_ROW) {
let queryResultCol1 = sqlite3_column_text(tableColumnsQueryStatement, 1)
let currentColumnName = String(cString: queryResultCol1!)
if currentColumnName == columnName {
retVal = true
break
}
}
}
return retVal
}