【发布时间】:2017-10-23 20:04:52
【问题描述】:
我正在尝试更新表中的值。我正在执行以下更新查询以更新特定记录。查询执行良好,但未更新记录。我检查了数据库在文档目录中,并且数据库打开成功。不知道哪里出错了。为什么表没有更新。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES );
NSString *path = [paths objectAtIndex:0];
NSString *fullPath = [path stringByAppendingPathComponent:@"agpla.sqlite"];
sqlite3_stmt *updateStmt;
const char *dbpath = [fullPath UTF8String];
if(sqlite3_open(dbpath, &database) == SQLITE_OK)
{
const char *sql = "UPDATE favorites SET Crop = ?, Seeds = ?, Width = ? Where id=?";
if(sqlite3_prepare_v2(database, sql, -1, &updateStmt, NULL)==SQLITE_OK){
sqlite3_bind_text(updateStmt, 4, [titleLabel.text UTF8String], -1, SQLITE_TRANSIENT);
// sqlite3_bind_text(updateStmt, 1, [seedsField.text UTF8String], -1, SQLITE_TRANSIENT);
//sqlite3_bind_text(updateStmt, 2, [rowField.text UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_int(updateStmt, 1, [seedsField.text intValue]);
sqlite3_bind_int(updateStmt, 2, [rowField.text intValue]);
sqlite3_bind_int(updateStmt, 3, [appDel.idToDelete intValue]);
}
}
if(sqlite3_step(updateStmt) != SQLITE_DONE) {
NSLog(@"Problems updating entry in reminder");
}
/* Finished */
sqlite3_finalize(updateStmt);
【问题讨论】:
-
仅供参考 - 您应该在
if (sqlite3_prepare_v2...)块内调用sqlite3_step和sqlite3_finalize。你应该在if (sqlite3_open...)块的末尾调用sqlite3_close。
标签: ios objective-c iphone sqlite