2012-06-11 3 views
0

База данных может быть открыта() с использованием одного и того же ключа шифрования и работает нормально. Пробовал несколько зашифрованных баз данных - все можно открыть, но не подключить.Зашифрованная база данных SQLite не может быть присоединена: «Невозможно открыть файл базы данных»

Это работает, когда шифруются и когда не шифруется (ByteArray равно нулю):

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

это работает только, когда не шифрованные:

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

Любая помощь приветствуется.

UPDATE:

Просто нашли странную закономерность здесь:

Это кажется, что если я создаю зашифрованную базу данных, а затем создать новые базы данных и прикрепить их, все работает отлично.

Созданные файлы после разгрузки будут только правильно открываться с использованием команды, из которой они были первоначально созданы. Поэтому зашифрованная база данных, которую я создал перед использованием open(), будет открываться только с помощью метода open(). Все зашифрованные базы данных, которые были первоначально созданы с помощью attach(), могут быть открыты только с помощью attach(). Также не имеет значения, какая база данных была открыта() сначала, а какая - основная база данных. Он даже не может быть зашифрован.

Это что-то очень странное. Это ошибка? Или я делаю что-то не так?

ответ

0

Один из них, с которым я столкнулся некоторое время назад, и похоже, что это может повлиять на вас. Если вы создаете оба db из AIR, это должно работать нормально, однако, если вы создали его с любым внешним инструментом - обычно большинство инструментов будут по умолчанию PRAGMA ENCODING = UTF8. AIR, будучи Adobe, делает что-то совсем другое, чем просто прямо, говоря вам, что они создают свой UTF16-LE.

Согласно правилам sqlite, разные типы кодирования не могут быть присоединены так или иначе. Один из способов проверки заключается в использовании sqliteman или какого-либо другого редактора sqlite для проверки параметров прагмы.

Для меня мне пришлось начать с посещенного db (пустые базы данных, а именно, заголовок был написан AIR), который должен был быть инициализирован из базы данных шаблонов. Если я разрешил AIR создавать начальный db, он был установлен в UTF16, к которому я не мог подключить шаблон UTF8.

Смежные вопросы