0

可以使用相同的加密密钥打开()数据库并且它工作正常。尝试使用多个加密数据库 - 都可以打开,但不能附加。

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

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

这仅在未加密时有效:

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

任何帮助表示赞赏。

更新:

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

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

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

这是一件很奇怪的事情。这是一个错误吗?还是我在这里做错了什么?

4

1 回答 1

0

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

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

对我来说,我最终不得不从要从模板数据库初始化的种子数据库(空数据库 - 只是标题 - 被 AIR 覆盖)开始。如果我允许 AIR 创建我的起始数据库,它被设置为 UTF16,我无法将 UTF8 模板附加到该数据库。

于 2012-06-13T17:43:18.477 回答