首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQLite记录在iPhone模拟器上不正确

SQLite记录在iPhone模拟器上不正确
EN

Stack Overflow用户
提问于 2009-11-04 04:10:24
回答 4查看 561关注 0票数 0

我有一个SQLite数据库,里面有19条记录。在这些记录中,有18条的"threatLevel“值为1,其中一条的"threatLevel”值为2。该字段设置为1。为了测试目的,我最近将第19条记录更改为"threatLevel“2。我使用SQLite管理器 (火狐扩展)将值直接添加到我的项目中的sqlite文件中。我可以查询这个表,它显示第19条记录的"threatLevel“为2。当我在模拟器中运行我的应用程序时,第19条记录的"threatLevel”值为1。我已经尝试过清理我的构建,从模拟器卸载应用程序,甚至从我的项目中删除sqlite数据库并读取它。毫无办法。SQLite管理器表示它的值为2,但当程序运行时,它的值为1。

代码语言:javascript
运行
复制
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说,除了我的桌面上的版本之外,我的计算机上没有其他版本。这里有什么帮助吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-11-09 19:07:24

应该很容易识别您正在使用的数据库的名称/路径,因为您需要将参数作为sqlite3_open()的一部分提供?

代码语言:javascript
运行
复制
if (sqlite3_open([dataFilePath UTF8String], &database) == SQLITE_OK) {

数据库文件可能在模拟器中。模拟器中有一个选项是“重置内容和设置”。

票数 0
EN

Stack Overflow用户

发布于 2009-11-09 00:35:52

您可以使用lsof列出进程打开的文件,希望它可以帮助您确定正在使用的数据库。使用活动监视器等查找应用程序的进程ID,并在终端中运行lsof -p <PID>

票数 1
EN

Stack Overflow用户

发布于 2009-11-04 04:48:04

我认为,与其使用SELECT *,不如在select字符串中使用显式列名.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1671635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档