【发布时间】:2012-07-18 12:30:53
【问题描述】:
我无法进行更新,但插入和选择工作正常。
注意:
1) 我使用的包装器来自:https://github.com/misato/SQLiteManager4iOS
2) 相同的代码适用于 INSERT 语句,但不适用于更新
//NSString* sqlStr = (@"INSERT INTO sbu (sbuName) VALUES ( 'rrrr' );)"); //WORKS
3) 下面是代码:
本次更新相关代码如下:
我的内联代码
NSString* sqlStr = (@"UPDATE User SET Name = 'wweerr' WHERE Id = 19"); //using a direct sql to verify if it works - does not
SQLiteManager* dbManager =[[SQLiteManager alloc]initWithDatabaseNamed:@"data.db"];
NSError* error = [dbManager doQuery:sqlStr];
来自图书馆:
- (NSError *)doQuery:(NSString *)sql {
NSError *openError = nil;
NSError *errorQuery = nil;
//Check if database is open and ready.
if (db == nil) {
openError = [self openDatabase];
}
if (openError == nil) {
sqlite3_stmt *statement;
const char *query = [sql UTF8String];
sqlite3_prepare_v2(db, query, -1, &statement, NULL);
if (sqlite3_step(statement) == SQLITE_ERROR) {
const char *errorMsg = sqlite3_errmsg(db);
errorQuery = [self createDBErrorWithDescription:[NSString stringWithCString:errorMsg encoding:NSUTF8StringEncoding]
andCode:kDBErrorQuery];
}
//NSLog(@"sql error: %@", error)
NSInteger result = sqlite3_finalize(statement);
errorQuery = [self closeDatabase];
}
else {
errorQuery = openError;
}
【问题讨论】:
-
更新的错误是什么? select ... where Id = 18 给出了什么?
-
嗨,马克,这里奇怪的是没有产生错误:(我还做了一些步骤调试,流程在任何时候都没有停止。我不知道为什么会这样不工作..
-
select * from User where Id = 19提供了什么 -
嗨,马克,我发现了陷阱,请参阅下面的答案。另外,如果您对我在这里提出的这个新问题有答案:stackoverflow.com/questions/11547500/…