ProgramingTip

데이터베이스 연결을 닫는 가장 좋은 장소

bestdevel 2021. 1. 10. 22:56
반응형

데이터베이스 연결을 닫는 가장 좋은 장소


내 질문에 대한 답변을 잠시 찾고 있었지만 필요한 것이지지. ListView가있는 응용 프로그램과 DB에 새 레코드를 추가 할 수있는 양식이 있습니다. 따라서 할 쿼리가 많지 않습니다.

db에 대한 연결을 처리하는 방법은 무엇입니까? 원하는 것을 얻은 후 닫아야하나요? 아니면 계속 열어 두어야하나요? 성능과 배터리 수명에 대해 생각하면서 가장 좋은 방법이 무엇인지 알고 싶습니다.


Google 엔지니어 (Dianne Hackborn)의 게시물에 따르면 데이터베이스 연결을 열어 두는 데 없습니다.

안드로이드는 놀랍게 보일 수있는 의도적 인 디자인 결정을 내 렸는데, 애플리케이션이 종료 될 생각을 포기하고 대신 리소스를 정리했습니다. 어쨌든해야 할 일은해야합니다. 그 디자인을 감안할 때 프로세스 수명의 전체 기간 동안 아무것도 열어 두지 않고 닫지 않는 것은 절대이 아닙니다. 프로세스가 정리되면 정리됩니다.

따라서 단순성을 위해 응용 프로그램 클래스를 확장하여 코드에 잘 정의 된 단일 단일 점을 제공하고 onCreate(). DB 연결을 애플리케이션의 필드로 저장하고 나머지 코드에서 연결을 사용할 수있는 접근 자 메서드를 제공합니다.

그런 다음 걱정하지 않습니다.


데이터베이스에 대한 연결 설정은 비용이 많이 사용됩니다. 연결이 부족하지 않고 데이터베이스가 로컬 인 경우 일반적으로 확장하는 클라이언트-서버 응용 프로그램에서 수행하는 것처럼 데이터베이스에 대한 각 쓰기 작업에 대해 연결을 설정하는 대신 연결을 대신 연결합니다. 다수의 동시 사용자를 수용합니다.


일반적으로 연결을 연 Activity의 onDestroy () 함수에서 연결을 닫습니다. 커서를 사용하는 함수의 데이터베이스에서 커서를 닫습니다 ().

public MyActivity extends Activity{
    private myDatabase mDatabase; // myDatabase extends SQLiteOpenHelper
    private Cursor mCursor;

    public MyActivity(Context context){
        super(context);
        initMemberVariables();
    }

    public ElementButton(Context context, AttributeSet attrS){
    super(context, attrS);
        initMemberVariables();
    }

    public ElementButton(Context context, AttributeSet attrS, int defStyle){
        super(context, attrS, defStyle);
        initMemberVariables();
    }

    private void initMemberVariables(){
        mDatabase = new PSEdb(this.getContext());
    }

    private void getData(){
        mCursor = mDatabase.MyGetterFunction();
        while(mCursor.moveToNext()){
            try{
                // populate your data
            }catch(CursorIndexOutOfBoundsException ex){
                // handle the exception
            }
        }
        mCursor.close();
    }

    @Override
    public void onDestroy(){
        super.onDestroy();
        mDatabase.close();
    }
}

참조 URL : https://stackoverflow.com/questions/6608498/best-place-to-close-database-connection

반응형