2012-06-11 3 views
0

동일한 암호화 키를 사용하여 데이터베이스를 열 수 있으며 제대로 작동합니다. 여러 개의 암호화 된 데이터베이스를 사용해보십시오. 모두 열 수는 있지만 첨부 할 수는 없습니다. 암호화 및 암호화되지 않은 경우 (이 ByteArray가 null) 때암호화 된 SQLite 데이터베이스를 연결할 수 없습니다 : "데이터베이스 파일을 열 수 없습니다."

이 작동 :

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

암호화되지 않은이 유일한 작품 : 어떤 도움에 감사드립니다

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

합니다.

는 UPDATE :

내가 암호화 된 데이터베이스를 만든 다음이를 새 데이터베이스를 작성하고 첨부 할 경우, 모든 것이 잘 작동 것으로 보인다 :

그냥 여기 이상한 패턴을 발견했다.

생성 된 파일은 언로드 한 후 처음 생성 된 명령을 사용하여 제대로 열립니다. 따라서 open()을 사용하기 전에 만든 암호화 된 데이터베이스는 open() 메서드로만 열립니다. attach()를 사용하여 처음 생성 된 모든 암호화 된 데이터베이스는 attach()를 사용하여 열 수 있습니다. 또한 어떤 데이터베이스가 먼저 열렸는지, 어떤 데이터베이스가 기본 데이터베이스인지는 중요하지 않습니다. 심지어 암호화되지 않을 수도 있습니다.

이것은 매우 이상합니다. 이거 버그 야? 아니면 여기서 뭔가 잘못하고있는 걸까요?

답변

0

나는 잠시 전에 만난 하나의 잡았다. 그리고 그것은 당신에게 영향을 줄 것 같은데. AIR에서 db를 모두 작성하는 경우이 작업은 정상적으로 작동하지만 외부 도구로 작성한 경우 일반적으로 대부분의 도구는 기본값 PRAGMA ENCODING = UTF8이됩니다. 어도비가되고있는 AIR는 UTF16-LE를 만들었다는 사실과 조금 다릅니다.

sqlite 규칙에 따르면 다른 인코딩 유형은 어떤 식 으로든 첨부 할 수 없습니다. 확인하는 한 가지 방법은 sqliteman 또는 다른 sqlite 편집기를 사용하여 pragma 설정을 확인하는 것입니다.

나를 위해 필자는 템플릿 데이터베이스에서 초기화 된 시드 된 db (빈 데이터베이스 - 헤더 만 - AIR 작성)를 시작해야했습니다. AIR에서 시작 데이터베이스를 만들도록 허용 한 경우 UTF8 템플릿을 첨부 할 수없는 UTF16으로 설정되었습니다.

관련 문제