본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] SQLiteQueryBuilder 에 대해 알아보자.

by 돼지왕 왕돼지 2012. 2. 27.
반응형
 

안녕하세요 돼지왕 왕돼지입니다.

오늘은 SQLiteQueryBuilder 에 대해 알아보겠습니다.


SQLiteQueryBuilder 는 뭐하는 녀석인가요?

 
Database 작업을 많이 해보신 분은 알겠지만, 데이터를 다루는 어플에서는 복잡한 query 문을 자주 마딱뜨립니다. 이 때 모든 어떤 조건들을 추가하거나 column 을 추가하거나 할 때 string 만으로 조작을 한다면 매우 불편한 경우가 많습니다. 이럴 때, SQLiteQueryBuilder 를 사용하면, 필요한 것들을 쭉쭉 builder 에 밀어넣어주고, 가장 마지막에 query 를 수행하는 형태로 database 작업을 할 수 있습니다. 물론, 잘만 이용하면 편해면서도, 메모리도 절약할 수 있고, 여러번의 query 가 필요한 것을 한번의 query 로 대체할 수도 있기 때문에 수행속도가 빨라진다고도 볼 수 있겠네요.



어떤 API 들이 있나요?

 
참조 :  http://developer.android.com/reference/android/database/sqlite/SQLiteQueryBuilder.html 

static void appendColumns( StringBuilders s, String[] columns );
 

void appendWhereEscapeString( String inWhere );
 

String buildQuery( String[] projectionIn, String selection, String hroupBy, String having, String sortOrder, String limit );
 

static String buildQueryString( boolean distinct, String tables, String[] columns, String where, String groupBy, String having, String orderBy, String limit );
 

String buildUnionQuery( String[] subQueries, String sortOrder, String limit );
 

String buildUnionSubQuery( String typeDiscriminatorColumn, String[] unionColumns, Set<String> columnsPresentInTable, int computedColumnsOffset, String typeDiscriminatorValue, String selection, String groupBy, String having );
 

String getTables();
 

Cursor query( SQLiteDatabase db, String[] projectionIn, String selection, String[] selectionArgs, String groupBy, String having, String sortOrder, String limit);
 

void setCursorFactory( SQLiteDatabase.CursorFactory factory );
 

void setDistinct( boolean distinct );
 

void setProjectionMap( Map<String,String> columnMap );
 

void setStrict( boolean flag );
 

void setTables( String inTables )


 



아주아주 간단한 예제라도 하나 제공해주세요.

 
<example 1>

SQLiteQueryBuilder slqb = new SQLiteQueryBuilder();
slqb.setTables ( "table" );
sqlb.appendWhere( "_id = 5" );
Cursor cursor = slqb.query( "testdb.db" ); 

// select * from table where _id=5; 를 testdb.db 에 행한 것과 같음. 

<example 2>

SQLiteQueryBuilder slqb = new SQLiteQueryBuilder();
slqb.setTables( "table1, table2" );
slqb.appendWhere( "table1._id = table2._id" );
String returnFormat[] = { "table1._id", "table1.name", "table2._id" };
SQLiteDatabase db = mDBHelper.getReadableDatabase();
Cursor cursor = slqb.query( db, returnStr, null, null, null, null, null };

// select table1._id, table1.name, table2._id from table1, table2 where table1._id=table2._id; 를 db에 행한 것과 같음.

 

반응형

댓글