[ReferenceBook] DB(SQLite) 사용하기

Study/Android Studio 2021. 1. 26. 00:52 Posted by meanoflife
반응형

DB(SQLite) 사용하기

 

안드로이드 OS에는 SQLite라는 데이터베이스가 내장되어 있습니다. SQLite를 이용하여 DB에 테이블을 생성하고 조회select를 해보겠습니다.

 

먼저, 소스를 보고 설명을 하겠습니다.

소스는 제가 개인적으로 진행하고 있는 간단한 앱에서 사용하고 있는 내용입니다.

 

    private void setRecvArg() {
        RecyclerView recyclerView = findViewById(R.id.recvArg);

        try{
            // DB에서 정보를 조회한다.
            SQLiteDatabase database = openOrCreateDatabase( "ReferenceBook", MODE_PRIVATE, null);

//            String strSQL = "CREATE TABLE TB_OBJ_BAS (\n" +
//                    "\tOBJ_ID\tTEXT,\n" +
//                    "\tIO_DSCD\tTEXT,\n" +
//                    "\tARG_NM\tTEXT,\n" +
//                    "\tDTP_CD\tTEXT,\n" +
//                    "\tDESC_TXT\tTEXT,\n" +
//                    "\tLST_CHG_DTM\tTEXT,\n" +
//                    "\tPRIMARY KEY(OBJ_ID,IO_DSCD,ARG_NM)\n" +
//                    ")";
//
//            database.execSQL(strSQL);
//
//            strSQL = "INSERT INTO TB_OBJ_BAS\n" +
//                    "VALUES( 'getSelectedRow()'\n" +
//                    "      , 'I'\n" +
//                    "\t  , 'nStartRow'\n" +
//                    "\t  , 'Long'\n" +
//                    "\t  , '시작 Row-Index'\n" +
//                    "\t  , '202101252058'\n" +
//                    "\t  )";
//
//            database.execSQL( strSQL );

            Cursor cursor = database.rawQuery("SELECT * FROM TB_OBJ_BAS", null);

            int iCount = cursor.getCount();

            // 리싸이클러뷰에 레이아웃 매니저 설정하기
            LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
            recyclerView.setLayoutManager(layoutManager);

            InfoArgAdapter infoArgAdapter = new InfoArgAdapter();

            for(int i = 0; i < iCount; i++) {
                cursor.moveToNext();

                Toast.makeText(this, cursor.getString(2), Toast.LENGTH_LONG);

                infoArgAdapter.addItem(new InfoArgItem( cursor.getString(2)
                                , cursor.getString(3)
                                , cursor.getString(4)
                        )
                );
            }

            recyclerView.setAdapter(infoArgAdapter);

        }catch(Exception e) {
            e.printStackTrace();
        }
    }

 

데이터베이스 생성 및 OPEN

 

데이터베이스를 사용하기 위해서는 먼저, 테이블을 생성할 데이터베이스 영역을 만들어 줘야 합니다.

 

  openOrCreateDatabase( ~ );

 

함수를 보면, 바로 이해하실 것 같습니다.

'DataBase'를 'Open' 또는 'Create' 하겠다는 의미로, 지정한 이름의 데이터베이스가 있으면 OPEN하고 없으면 지정한 이름으로 데이터베이스를 생성하는 함수입니다.

 

예문에서는 'ReferenceBook'이라는 Database를 사용하겠다고 선언한 것입니다.

 

DDL & DML

 

데이터베이스가 생성되었으니 이제 DDL문으로 모델링 작업을 하거나 DML문으로 테이블의 데이터를 사용하면 됩니다.

 

  * 쿼리 문법은 별도 공부해 주세요.

 

# CREATE TABLE TB_OBJ_BAS( ~ )

   - 테이블을 생성하는 DDL 명령어입니다.

   - TB_OBJ_BAS 라는 이름으로 테이블을 생성합니다.

   - 컬럼은 괄호안에 정의된 항목들입니다.

 

# INSERT INTO TB_OBJ_BAS VALUES( ~ )

   - 테이블에 데이터를 생성하는 DML 명령어입니다.

   - TB_OBJ_BAS 테이블에 데이터를 생성합니다.

   - 데이터는 VALUES절에 입력한 내용입니다.

 

# SELECT * FROM TB_OBJ_BAS

   - 테이블의 데이터를 조회하는 DML 명령어입니다.

   - TB_OBJ_BAS 테이블의 데이터 전체를 조회합니다.

 

위의 예시에 보면, 쿼리를 실행하는 방법이 2가지가 있습니다.

  1. database.execSQL( {쿼리문} );

  2. database.rawQuery( {쿼리문) );

 

execSQL함수는 SQL수행 후 결과를 반환하지 않는 쿼리에 사용합니다. DDL문과 INSERT, UPDATE, DELETE 등의 DML문이 이에 해당합니다.

rawQuery함수는 수행 후 결과값이 존재하는 SELECT문에 사용됩니다. 수행 결과는 Cursor형태로 반환됩니다.

 

실제 적용 및 사용 예시는 위의 소스를 보시면, 이해하실 수 있으실 겁니다. 사용법이 상당히 간단합니다.

 

 

* 참고자료 Link

  - SQLite

  - Android DB(SQLite) 파일 위치

 

The End.

반응형