我已经编写了SQLITE插入查询来在sqlite数据库表中插入一些数据。但现在我正在尝试在该sqlite表中添加一个新列并向该列插入新值。因此,每当我尝试更新我的数据库表时,它应该每次都创建一个新列并更新并给我插入新值。 下面是我点击按钮时的更改和更新代码。
-(void)updateStatusData:(NSString *)txt {
sqlite3_stmt *statement;
dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = [dirPaths objectAtIndex:0];
databasePath = [docsDir stringByAppendingPathComponent:@"db.sqlite"];
NSLog(@"%@",databasePath);
if (sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK)
{
NSString *updateSQL = [NSString stringWithFormat:@"ALTER TABLE STATUS ADD COLUMN newcolumn; UPDATE STATUS SET newcolumn=%@ WHERE rowid=1",txt];
const char *update = [updateSQL UTF8String];
NSLog(@"update statmnt %s",update);
sqlite3_prepare_v2(database, update, -1, &statement, NULL);
if (sqlite3_step(statement) == SQLITE_DONE)
{
sqlite3_bind_text(statement, 1, [txt UTF8String], -1, SQLITE_TRANSIENT);
NSLog(@" Status Results Updated Successfully");
} else {
NSLog(@"error %s",sqlite3_errmsg(database));
}
sqlite3_finalize(statement);
sqlite3_close(database);
}
}
我的新列名是newcolumn,它应该保存的值是'txt'。 我的问题是每当我运行此代码时,我会在我的sqlite数据库表中插入一个新列。但是对于该新列,插入的值为NULL。 代码应该在WHATSAPP上更新状态时运行,它会保存更新后的状态... 请帮帮我,我做错了什么。任何帮助表示赞赏。
答案 0 :(得分:0)
不要同时运行这两个查询。为添加列创建两个单独的查询,为更新表创建一个查询。所以运行两个不同的语句而不是一个。