我有一个SQLite数据库,里面有19条记录。在这些记录中,有18条的"threatLevel“值为1,其中一条的"threatLevel”值为2。该字段设置为1。为了测试目的,我最近将第19条记录更改为"threatLevel“2。我使用SQLite管理器 (火狐扩展)将值直接添加到我的项目中的sqlite文件中。我可以查询这个表,它显示第19条记录的"threatLevel“为2。当我在模拟器中运行我的应用程序时,第19条记录的"threatLevel”值为1。我已经尝试过清理我的构建,从模拟器卸载应用程序,甚至从我的项目中删除sqlite数据库并读取它。毫无办法。SQLite管理器表示它的值为2,但当程序运行时,它的值为1。
primaryKey = pk;
database = db;
// Compile the query for retrieving City data.
if (init_statement == nil){
const char *sql = "SELECT * FROM myTable WHERE id=?";
if (sqlite3_prepare_v2(database, sql, -1, &init_statement, NULL) != SQLITE_OK){
NSAssert1(0, @"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database));
}
}
sqlite3_bind_int(init_statement, 1, primaryKey);
if (sqlite3_step(init_statement) == SQLITE_ROW){
LOAD THE FIRST 12 FIELDS HERE
self.threat_level = sqlite3_column_int(init_statement, 13);
} else {
self.name = @"Nothing";
}编辑--我刚刚尝试从项目中删除sqlite数据库,然后将它移到桌面上以支持它。我仍然可以构建和运行我的应用程序。因此,它正在研究我的数据库的旧版本,但Spotlight说,除了我的桌面上的版本之外,我的计算机上没有其他版本。这里有什么帮助吗?
发布于 2009-11-09 19:07:24
应该很容易识别您正在使用的数据库的名称/路径,因为您需要将参数作为sqlite3_open()的一部分提供?
if (sqlite3_open([dataFilePath UTF8String], &database) == SQLITE_OK) {数据库文件可能在模拟器中。模拟器中有一个选项是“重置内容和设置”。
发布于 2009-11-09 00:35:52
您可以使用lsof列出进程打开的文件,希望它可以帮助您确定正在使用的数据库。使用活动监视器等查找应用程序的进程ID,并在终端中运行lsof -p <PID>。
发布于 2009-11-04 04:48:04
我认为,与其使用SELECT *,不如在select字符串中使用显式列名.
https://stackoverflow.com/questions/1671635
复制相似问题