반응형
안녕하세요 돼지왕 왕돼지입니다.
오늘은 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에 행한 것과 같음.
반응형
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[Android/안드로이드] 나인 패치 ( Nine Patch ) 에 대해 알아봅니다. (0) | 2012.02.27 |
---|---|
[Android/안드로이드] Toast ( 토스트 ) 메세지에 대해 알아봅시다. (0) | 2012.02.27 |
[Android/안드로이드] jarsigner 로 apk sign하기. ( with 예제 ) (4) | 2012.02.27 |
[Android/안드로이드] jarsigner 사용하여 apk 의 sign 여부 확인하기. (0) | 2012.02.27 |
[Android/안드로이드] OpenGL Text 출력하기. ( with sample code ) (0) | 2012.02.27 |
댓글