두 개의 Sqlite 데이터베이스 병합 및 연결된 데이터베이스의 덤프 데이터 (데이터베이스를 열 수 없음)

임티 야즈 칼라 니

두 개의 데이터베이스 Mydb.dbUpdatedb.db. 이들은 동일한 구조를 가지고 있으며 둘 다 동일한 Table1.

나는 모든 레코드를 추가 할 Updatedb.dbTable1.

업데이트 할 레코드가 약 25000 개 있습니다.

나는 다음을 사용했다 :

mDataBase.openDataBaseForWrite();
    SQLiteDatabase myInternalDatabase = mDataBase.getDb();
    myInternalDatabase.execSQL("ATTACH DATABASE '" + ATTACH_DB_PATH
            + File.separator + ATTACH_DB_NAME + "' AS New_DB");

    myInternalDatabase
            .execSQL("INSERT INTO ResultMaster SELECT * FROM New_DB.ResultMaster;");

이 예외가 발생합니다.

09-16 14:44:32.584: E/AndroidRuntime(2766): FATAL EXCEPTION: main
09-16 14:44:32.584: E/AndroidRuntime(2766): android.database.sqlite.SQLiteCantOpenDatabaseException: unable to open database: /mnt/sdcard/AttachDb/backupname.db (code 14)
09-16 14:44:32.584: E/AndroidRuntime(2766):     at android.database.sqlite.SQLiteConnection.nativeExecuteForChangedRowCount(Native Method)
09-16 14:44:32.584: E/AndroidRuntime(2766):     at android.database.sqlite.SQLiteConnection.executeForChangedRowCount(SQLiteConnection.java:727)
09-16 14:44:32.584: E/AndroidRuntime(2766):     at android.database.sqlite.SQLiteSession.executeForChangedRowCount(SQLiteSession.java:754)
09-16 14:44:32.584: E/AndroidRuntime(2766):     at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:64)
09-16 14:44:32.584: E/AndroidRuntime(2766):     at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1665)
09-16 14:44:32.584: E/AndroidRuntime(2766):     at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1594)
09-16 14:44:32.584: E/AndroidRuntime(2766):     at com.attachtwodatabase.MainActivity.attachDatabase(MainActivity.java:62)
09-16 14:44:32.584: E/AndroidRuntime(2766):     at com.attachtwodatabase.MainActivity.access$0(MainActivity.java:59)
09-16 14:44:32.584: E/AndroidRuntime(2766):     at com.attachtwodatabase.MainActivity$1.onClick(MainActivity.java:49)
09-16 14:44:32.584: E/AndroidRuntime(2766):     at android.view.View.performClick(View.java:4207)
09-16 14:44:32.584: E/AndroidRuntime(2766):     at android.view.View$PerformClick.run(View.java:17372)
09-16 14:44:32.584: E/AndroidRuntime(2766):     at android.os.Handler.handleCallback(Handler.java:725)
09-16 14:44:32.584: E/AndroidRuntime(2766):     at android.os.Handler.dispatchMessage(Handler.java:92)
09-16 14:44:32.584: E/AndroidRuntime(2766):     at android.os.Looper.loop(Looper.java:137)
09-16 14:44:32.584: E/AndroidRuntime(2766):     at android.app.ActivityThread.main(ActivityThread.java:5041)
09-16 14:44:32.584: E/AndroidRuntime(2766):     at java.lang.reflect.Method.invokeNative(Native Method)
09-16 14:44:32.584: E/AndroidRuntime(2766):     at java.lang.reflect.Method.invoke(Method.java:511)
09-16 14:44:32.584: E/AndroidRuntime(2766):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
09-16 14:44:32.584: E/AndroidRuntime(2766):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
09-16 14:44:32.584: E/AndroidRuntime(2766):     at dalvik.system.NativeStart.main(Native Method)

내가 무엇을 잘못하고 있지?

웨이브

ATTACH 대상 데이터베이스에 병합 할 데이터베이스는 연결된 데이터베이스의 레코드를 대상에 삽입합니다.

INSERT INTO table1 SELECT * FROM attacheddb.table1;

예를 들어 ANR을 방지하기 위해 비동기 작업에서 수행하십시오.

이미 존재하는 항목도 업데이트해야합니다.

이를 위해 충돌 해결 전략을 지정할 수 있습니다.

INSERT ... ON CONFLICT REPLACE;

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관