【问题标题】:iOS - sqliteDatabase - returns error code 26iOS - sqliteDatabase - 返回错误代码 26
【发布时间】:2014-08-01 05:53:46
【问题描述】:

在我的应用程序中,我使用数据库作为加密数据库。使用下面的代码,我正在使用下面的代码打开数据库。数据库正在打开并检查密钥。但如果是@"PRAGMA user_version;"查询,它返回错误代码26。你能帮帮我吗?

if (sqlite3_open_v2(dbpath, &database, SQLITE_OPEN_READWRITE| SQLITE_OPEN_CREATE, NULL) == SQLITE_OK)
        {
            if(sqlite3_key(database, [key UTF8String], strlen([key UTF8String])) == SQLITE_OK)
            {
                 NSString *tString = @"PRAGMA user_version;";
                int resultCode = sqlite3_prepare_v2(_database, [tString UTF8String], NULL, NULL, NULL);

            }
        }

【问题讨论】:

  • 你需要检查这个如何使用PRAGMA user_version;stackoverflow.com/questions/2659797/…
  • 我使用了原始查询执行。但我仍然收到相同的错误错误:无法执行带有消息“文件已加密或不是数据库”的编译指示语句。

标签: ios sqlite


【解决方案1】:

错误代码 26 是 SQLITE_NOTADB。您的密钥可能不正确。根据文档:

如果您指定了不正确的密钥,您将不会立即收到错误消息。但当您第一次尝试访问数据库时,您会收到 SQLITE_NOTADB 错误消息,并显示“文件已加密或不是数据库”。

【讨论】:

  • 数据库处于打开状态。但是当我执行查询时,收到错误:未能执行带有消息'文件已加密或不是数据库'的 pragma 语句。
  • 是的,如果密钥不正确,您会看到这种行为。
猜你喜欢
  • 2015-01-01
  • 1970-01-01
  • 2013-01-16
  • 2014-12-18
  • 2011-12-04
  • 2014-07-03
  • 1970-01-01
  • 2017-06-03
  • 2016-07-25
相关资源
最近更新 更多