데이터베이스 관련 앱을 구현 중입니다.데이터베이스가 열리지 않는 예외는 예외입니까?
여러 번 열리고 닫는 데이터베이스 연결을 삽입, 업데이트 및 삭제하려고합니다.
괜찮습니다.
하지만 데이터베이스가 다른 상황에서 예외적으로 열리지 않는 경우가 있습니다.
어떻게 이러한 문제를 해결할 수 있습니까?
데이터베이스 관련 앱을 구현 중입니다.데이터베이스가 열리지 않는 예외는 예외입니까?
여러 번 열리고 닫는 데이터베이스 연결을 삽입, 업데이트 및 삭제하려고합니다.
괜찮습니다.
하지만 데이터베이스가 다른 상황에서 예외적으로 열리지 않는 경우가 있습니다.
어떻게 이러한 문제를 해결할 수 있습니까?
제공 한 정보를 바탕으로 문제는 비즈니스 로직 및 아무도 없다고 추측 할 수 있지만 근본 원인을 알 수 있어야합니다. 코드가 없으면 정확한 장소를 알려 드릴 수 없습니다. 가능한 이유 중 하나는 비즈니스 논리에 따라 닫힌 데이터베이스에서 일부 작업 (삽입, 업데이트)을 시도하는 것일 수 있습니다.
DB가 필요할 때 항상 열려 있는지 확인하기 위해 해결 방법을 사용할 수 있습니다. 게으른 초기화 접근법을 사용하여 데이터베이스 게터 메소드를 구현하면 적어도 액세스해야 할 때 DB가 열려 있음을 보장합니다. 1. 메이크업 DB 객체 반환하기로되어 공공 방법 : 코드 사용 도처에서, 이제 DB를 액세스하려면이 방법을
public SQLiteDatabase getDB() {
if ((mDataBase == null) || (!mDataBase.isOpen())) {
// create or open your database using an OpenHelper
mDataBase = SQLiteOpenHelper.getWritableDatabase();
}
return mDataBase;
}
를 대신 직접 접근 여기
내가 이야기하고있는 무슨이다 변수 mDataBase.코드는 단지 아이디어 만주고 실제로 컴파일 할 수는 없습니다. 그래도이 대안을 사용하는 대신 비즈니스 논리를 수정하는 것이 좋습니다.
데이터베이스를 열 수 없으면 여기에 log cat을 게시하십시오. 우리는 응용 프로그램의 마음을 읽을 수 없습니다 :) –
이것은 일반적으로 2 개 이상의 스레드가 동일한 테이블이나 데이터를 수정하려고 할 때 발생합니다. 다음 디자인 패턴을 따르십시오 http://www.androiddesignpatterns.com/2012/05/correctly-managing-your-sqlite-database.html. DAO 호출마다 db를 열고 닫을 필요가 없습니다. – vrs
가능한 경우 항상 코드를 입력하고 답변과 upvote를 수락하십시오. 또한 연구 기초 질문을하십시오. –