我有一个包含5列的表,有时我会在该表中更新或插入新条目。我从json服务获取键/值,但是此服务又添加了一个字段,现在当我尝试在表中更新或插入新条目时出现错误:
未插入值。错误:没有这样的列:email
我从此行得到该错误:
sqlite3_prepare(_database, queryChar, -1, &statement, NULL);
if (sqlite3_step(statement) != SQLITE_DONE)
NSLog(@"Values not inserted. Error: %s",sqlite3_errmsg(_database));
queryChar 具有以下格式:
更新内容SET [id] =?,[phone] =?,[name] =?,[websiteurl] =?,[邮政编码] =?,[电子邮件] =?,[url] =? id = 69的哪里
我想知道哪种方法是解决此类错误的最有效方法。我应该检查表中是否存在每个列名,然后将其添加到queryChar吗?
答案 0 :(得分:0)
要创建表格,您需要像
一样创建表格CREATE TABLE IF NOT EXISTS MYTABLENAME(ID INTEGER PRIMARY KEY AUTOINCREMENT,id TEXT,TABLECOLUMN1 TEXT, TABLECOLUMN2 TEXT, TABLECOLUMN3 TEXT);
还必须更改数据库以在数据库中添加新列
[必须更改您的表以在以后在现有表中添加新列]
-(void)ChangeDB:(NSInteger)newDbVersion
{
switch (newDbVersion)
{
case 1:
{
"ALTER TABLE MYTABLENAME ADD COLUMN NEWCOLUMNTOBEADD TEXT"
//run this query in your sqlite
}
break;
default:
break;
}
}
这是从json提取数据后的更新查询,其中NEWCOLUMNTOBEADD是在运行时添加到数据库表中的新数据
update MYTABLENAME set TABLECOLUMN1 ='%@', TABLECOLUMN2='%@', TABLECOLUMN3='%@', NEWCOLUMNTOBEADD = '%@' where id ='%@'
的更多信息