2011-09-08 4 views
0

내가 왜 'SQLiteException : 데이터베이스가 잠긴'예외가 발생하는지 알 수 있도록 도와 주시겠습니까? 내 콘텐츠 제공, 나는데이터베이스가 잠김 예외

mDb = SQLiteDatabase.openDatabase(path, null, 0); 

09-07 19:44:43.912 6830 6830 E AndroidRuntime: FATAL EXCEPTION: main 
09-07 19:44:43.912 6830 6830 E AndroidRuntime: android.database.sqlite.SQLiteException: database is locked 
09-07 19:44:43.912 6830 6830 E AndroidRuntime: at android.database.sqlite.SQLiteDatabase.dbopen(Native Method) 
09-07 19:44:43.912 6830 6830 E AndroidRuntime: at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1990) 
09-07 19:44:43.912 6830 6830 E AndroidRuntime: at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:905) 
09-07 19:44:43.912 6830 6830 E AndroidRuntime: at com.mycompany.myapplication.provider.MyContentProvider.query(MyContentProvider.java:356) 

답변

2

한 번에 두 번 이상 데이터베이스를 열려고합니다. 너는 할 수 없어.

데이터베이스를 두 번 이상 열지 못하게하려면 데이터베이스 처리기 클래스를 singleton으로 설정하는 것이 좋습니다.

안드로이드에 있기 때문에 더 나은 해결책은 SQLiteOpenHelper 클래스를 확장하는 것입니다. 자동으로 데이터베이스가 한 번 열리고 초기 생성 및 데이터베이스 업데이트에 유용한 기능이 있는지 확인합니다.

0

데이터베이스를 다른 데이터베이스 핸들러가 데이터베이스를 보는 경우 올 것이다 예외 잠겨 내 제공자 생성자에서 호출합니다. 그래서 당신이 다른 처리기에서 데이터베이스를 찾고 있는지 확인하십시오.

+0

내 ContentProvider에서 데이터베이스를 엽니 다. 그리고 난 그 데이터베이스를 여는 ContentProvider가 1 개 밖에 없습니다. – michael

관련 문제