更改 Sqlite 数据库 table 并更新 iOS 的查询
Alter Sqlite Database table and Update query for iOS
我已经编写了 SQLITE 插入查询以在 sqlite 数据库中插入一些数据 table。但是现在我正在尝试在该 sqlite table 中添加一个新列并向该列插入新值。因此,每当我尝试更新我的数据库 table 时,它应该每次都创建一个新列并更新并给我插入新值。
下面是我通过单击按钮进行的更改和更新代码。
-(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 数据库 table 中插入一个新列。但是对于该新列,插入的值是 NULL。
该代码应该 运行 就像您在 WHATSAPP 上更新状态时的方式一样,它会保存更新后的状态...
请帮助我我做错了什么。任何帮助表示赞赏。
不要运行两者一起查询。进行两个单独的查询,一个用于添加列,一个用于更新 table。所以 运行 两个不同的语句而不是一个。
我已经编写了 SQLITE 插入查询以在 sqlite 数据库中插入一些数据 table。但是现在我正在尝试在该 sqlite table 中添加一个新列并向该列插入新值。因此,每当我尝试更新我的数据库 table 时,它应该每次都创建一个新列并更新并给我插入新值。 下面是我通过单击按钮进行的更改和更新代码。
-(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 数据库 table 中插入一个新列。但是对于该新列,插入的值是 NULL。 该代码应该 运行 就像您在 WHATSAPP 上更新状态时的方式一样,它会保存更新后的状态... 请帮助我我做错了什么。任何帮助表示赞赏。
不要运行两者一起查询。进行两个单独的查询,一个用于添加列,一个用于更新 table。所以 运行 两个不同的语句而不是一个。