【发布时间】:2011-03-08 21:16:46
【问题描述】:
我正在使用 Objective-C 构建一个 iPhone 应用程序,该应用程序将数据存储在 SQLite 数据库中。我遇到的问题是,当我的应用程序运行时,我能够对表中的数据进行某些更改。具体来说,我需要允许用户单击一个按钮并从列表中选择某些餐厅作为“最喜欢”(真)或“不喜欢”(假)。
当我的模拟器运行时,代码运行良好。但是,当我关闭会话并重新启动应用程序时,我在上一个会话中所做的更改不会保存。这是相关的代码块:
- (void) addFavourite:(NSString *)rName{
sqlite3 *database;
NSString *updateString = nil;
NSString *trueStatement = @"true";
NavButtonAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
if (sqlite3_open([delegate.databasePath UTF8String], &database) == SQLITE_OK) {
updateString = @"UPDATE gtarestaurant set isFavourite = ? WHERE name = ?";
const char *sqlStatement = [updateString UTF8String];
sqlite3_stmt *compiledStatement;
if (sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) {
sqlite3_bind_text(compiledStatement, 1, [trueStatement UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(compiledStatement, 2, [rName UTF8String], -1, SQLITE_TRANSIENT);
while (sqlite3_step(compiledStatement) == SQLITE_ROW) {
}
sqlite3_finalize(compiledStatement);
}
sqlite3_close(database);
}
}
谁能看出我哪里出错了?看来我的问题是在用户进行更改后将更改提交到数据库
【问题讨论】:
-
你在哪里加载数据库?您是在代码中创建它还是复制资源文件?我怀疑您可能正在覆盖您的数据库,请发布该代码。
标签: iphone objective-c database sqlite