【发布时间】:2013-09-13 20:11:04
【问题描述】:
我想更新 Xcode sqlite db 中的一些数据。 db连接成功,但是sql语句好像有问题,一直返回“添加联系人失败”,谢谢帮助。
- (void) saveData:(id)sender
{
NSLog(@"The code runs through here!");
sqlite3_stmt *statement;
NSString *documents = [self applicationDocumentsDirectory];
NSString *dbPath = [documents stringByAppendingPathComponent:@"monitorDB.sqlite"];
const char *dbpath = [dbPath cStringUsingEncoding:NSASCIIStringEncoding];
if (sqlite3_open(dbpath, & contactDB) == SQLITE_OK)
{
NSString *insertSQL = [NSString stringWithFormat:
@"UPDATE profile SET username = \"%@\" WHERE id = 1" ,
self.username.text];
const char *insert_stmt = [insertSQL UTF8String];
sqlite3_prepare_v2(contactDB, insert_stmt,
-1, &statement, NULL);
if (sqlite3_step(statement) == SQLITE_DONE)
{
self.settingStatus.text = @"Contact added";
} else {
self.settingStatus.text = @"Failed to add contact";
}
sqlite3_finalize(statement);
sqlite3_close(contactDB);
} else {
self.settingStatus.text = @"DB Not Connect";
}
}
【问题讨论】:
-
又一个不使用他们正在使用的API提供的错误报告机制的程序员;提示
sqlite3_errmsg(). -
NSAssert1(0, @"创建更新语句时出错。'%s'", sqlite3_errmsg(contactDB));
-
它没有显示任何消息
-
NSLog()有什么问题?你为什么使用NSAssert()?断言是测试开发者断言,而不是报告运行时错误。 -
在尝试使用它之前,您是否将数据库从应用程序包复制到文档文件夹中(当然是测试它不存在)?
标签: iphone objective-c sqlite ios5 ios6