更改iOS的Sqlite数据库表和更新查询

时间:2016-06-04 12:48:29

标签: ios sqlite insert-update alter-table

我已经编写了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上更新状态时运行,它会保存更新后的状态... 请帮帮我,我做错了什么。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

不要同时运行这两个查询。为添加列创建两个单独的查询,为更新表创建一个查询。所以运行两个不同的语句而不是一个。