无法附加加密的SQLite数据库:“无法打开数据库文件”

时间:2012-06-11 18:06:17

标签: flex sqlite air

可以使用相同的加密密钥打开()编辑数据库,它可以正常工作。尝试使用多个加密数据库 - 所有数据库都可以打开,但不能连接。

这在加密时和未加密时有效(bytearray为null):

connection.open(file, "create", false, 1024, bytearray);

仅在未加密时才有效:

connection.attach("db" + newnum.toString(), file, new Responder(attachEncryptedSuccess, openEncryptedError), bytearray);

感谢任何帮助。

更新:

这里发现了一个奇怪的模式:

似乎如果我创建一个加密数据库,然后创建新数据库并附加它们,一切正常。

卸载后创建的文件只能使用最初创建的命令正确打开。因此,我在使用open()之前创建的加密数据库只能使用open()方法打开。最初使用attach()创建的所有加密数据库只能使用attach()打开。首先打开()编辑哪个数据库也无关紧要,即哪个数据库是主数据库。它甚至可以不加密。

这很奇怪。这是一个错误吗?或者我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

我曾经遇到过一个问题,听起来它可能会影响到你。如果要从AIR创建两个db,那么这应该可以正常工作,但是如果您使用任何外部工具创建了一个 - 通常大多数工具将默认PRAGMA ENCODING = UTF8。作为Adobe的AIR,做的事情与直接告诉你他们创建他们的UTF16-LE有点不同。

根据sqlite规则,不同的编码类型不能以某种方式附加。一种验证方法是使用sqliteman或其他一些sqlite编辑器来验证编译指示设置。

对我来说,我最终不得不从一个种子数据库开始(空数据库 - 只有标题 - 由AIR过度编写)才能从模板数据库初始化。如果我允许AIR创建我的起始数据库,则将其设置为UTF16,我无法附加UTF8模板。

相关问题