내 응용 프로그램에 기존 sqlite 데이터베이스가 있습니다. 성공적으로 실행 중입니다. 이제 sqlcipher를 사용하여 데이터베이스를 암호화해야합니다. 내 문제는 암호를 sqlite 변환 할 때 다음 예외가 있습니다. sqlite를 암호화 된 데이터베이스로 변환 :
net.sqlcipher.database.SQLiteException: table android_metadata already exists
at net.sqlcipher.database.SQLiteDatabase.native_rawExecSQL(Native Method)
at net.sqlcipher.database.SQLiteDatabase.rawExecSQL(SQLiteDatabase.java:1851)
at com.x.y.convert_sqlite_to_sqlcipher(Practitioner_menu.java:2626)
at com.x.y$AdminProcess.doInBackground(Practitioner_menu.java:1659)
at com.x.y$AdminProcess.doInBackground(Practitioner_menu.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:856)
내 변환 코드 :
는
File old_sqliteFile = getDatabasePath("old_db.sqlite");
File databaseFile = getDatabasePath("new_db.db");
databaseFile.mkdirs();
databaseFile.delete();
database = SQLiteDatabase.openOrCreateDatabase(databaseFile,
"password", null);
database.rawExecSQL(String.format(
"ATTACH DATABASE '%s' AS encrypted KEY '%s'",
databaseFile.getAbsolutePath(), "password");
database.rawExecSQL("select sqlcipher_export('encrypted')");
database.rawExecSQL("DETACH DATABASE encrypted");
database.close();
사람이 내가 뭘 잘못 알아 제발 도와주세요?
중복 가능성 [암호화 파일 또는 데이터베이스 (예외 net.sqlcipher.database.SQLiteException)하지 않다 (http://stackoverflow.com/questions/22062277/file-is-encrypted-or- is-not-a-database-exception-net-sqlcipher-database-sqlitee) – Gattsu
@maven 질문은 거의 같지만 오류는 다르다고 생각했습니다. 어떻게 그 문제를 해결 했습니까? – Amsheer