728x90

안드로이드 SQLite DB 관련으로 알아두어야 할 사항이다.


rawQuery 를 이용하는 방법과 query를 이용하는 방법의 차이점이다.


rawQuery() Example

rawQuery() 메소드에 SELECT 구문을 넘겨 주기만 하면 된다.

인자로 idx 를 받아서 Where 조건문으로 일치하는 데이터 칼럼을 전부 가져오는 코드다.


 SQLiteDatabase db = getReadableDatabase(); // 읽기 가능한 데이터베이스

 Cursor cursor = db.rawQuery("select * from myTable where _idx = ?", new String[] { idx });

 SQLiteDatabase db = getReadableDatabase(); // 읽기 가능한 데이터베이스

 String sql = "SELECT idx, id, pw, name FROM member";

 Cursor cursor = db.rawQuery(sql, null);


query() Example

query() 메소드는 SELECT 구문의 각 부분을 쪼개 각 인자로 넘겨받고, 최종적으로는 SELECT문을 생성해 실행한다.

 Cursor cursor = db.query(DB_TABLE,
    new String[] { KEY_ROWID, KEY_CATEGORY, KEY_SUMMARY, KEY_DESCRIPTION },
    null, null, null, null, null);

 query() 가 받아서 처리하는 인자의 순서
 1. 대상 테이블 이름(DB_TABLE)
 2. 값을 가져올 컬럼 이름의 배열
    String[] columns ={
KEY_ROWID, KEY_CATEGORY, KEY_SUMMARY, KEY_DESCRIPTION};
 3. WHERE 구문. 물음표를 사용해 인자의 위치를 지정할 수 있다.

     "name=?"
 4. WHERE 구문에 들어가는 인자값

     String[] params ={"홍길동"};
 5. GROUP BY 구문
 6. ORDER BY 구문
 7. HAVING 구문
 테이블 이름을 제외한 각 값이 필요없는 경우라면 null을 지정한다.

 db.query(DBTable,columns,whereclause,whereargs,null,null,null);

 String query =
    "SELECT column1, (SELECT max(column1) FROM table1) AS max FROM table1 " +
    "WHERE column1 = ? OR column1 = ? ORDER BY column1";
 sqLiteDatabase.rawQuery(query, whereArgs);




SQLiteOpenHelper 클래스에서 제공하는 ContentVales 객체를 이용하여 DB를 update 하는 방법이다.

public void update(Integer idx, String name, String mobileNO, String officeNO) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues cv = new ContentValues();
    cv.put(Column_Name, name);
    cv.put(Column_mobileNO, mobileNO);
    cv.put(Column_officeNO, officeNO);
    db.update(TABLE_NAME, cv, "idx = ? ", new String[]{Integer.toString(idx)});
}


이 코드를 표준 SQL 문으로 입력한다면 아래와 같다.

public void update(Integer idx, String name, String mobileNO, String officeNO) {
    SQLiteDatabase db = this.getWritableDatabase();
    String sql ="Update "+TABLE_NAME+" SET name='"+name+"' mobileNO='"+mobileNO+"' officeNO='"+officeNO+"' where idx="+idx+"";
    db.execSQL(sql);
}



728x90
블로그 이미지

Link2Me

,