【发布时间】:2012-08-27 20:14:17
【问题描述】:
我可以从我的 SQLITE DB 中读取数据,但无法更新它。我想知道数据库是否可写。
当我将 SQL 复制到 SQL 控制台时,代码会成功执行。所以SQL没有问题。
-(BOOL) updateScores{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"uniques.sqlite"];
FMDatabase* db = [FMDatabase databaseWithPath:writableDBPath];
BOOL success;
if ([db open]) {
if ([db hadError]) {
NSLog(@"DB Error %d: %@", [db lastErrorCode], [db lastErrorMessage]);
}
success = [db executeUpdate:[NSString stringWithFormat:@"UPDATE Score SET answer='11' WHERE name LIKE 'jack'"]];
if (success) {
NSLog(@"OK");
}else {
NSLog(@"FAIL");
}
[db close];
}else {
NSLog(@"Problem with DB");
}
return success;
}
【问题讨论】:
-
控制台打印什么? OK - FAIL - DB 有问题?
-
它说好的,但是当我在控制台中输入 select * SQL 时,它还没有更新。
-
如果你没有真正在里面放任何变量,为什么要使用 stringWithFormat 呢?尝试文字,如果它不起作用,请删除单引号。
-
还是不行。实际上,我得到的状态为
OK,表示查询成功执行。但是当我在 sqlite 终端中交叉检查时,它还没有更新。帮助 -
1:尝试在模拟器中启动应用程序并检查是否在您的文件系统上创建了 uniques.sqlite 文件(输出
writableDBPath)。我不信。 2:永远不要使用stringWithFormat执行查询。而是使用 FMDB 提供的解决方案。 github.com/ccgus/fmdb 3:有没有可能是你试图更新一个空的 sqlite3 数据库?你在哪里执行你的 DDL?
标签: iphone objective-c fmdb