728x90

SQLite DB의 테이블 데이터를 가져오는 쿼리 작성시 약간 잘못 생각하면 엉뚱한 결과가 나오더라.

public ArrayList<String> getAllCateData(String category){
    ArrayList<String> sqliteDBData = new ArrayList<>();
    // Select All Query
    String selectQuery = "SELECT * FROM " + HISTORY_TABLE + " WHERE category= '" + category + "' ORDER BY datetime ASC";
    SQLiteDatabase db = mHelper.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);
 
    System.out.println("cursor.getCount : "+cursor.getCount());
    System.out.println("selectQuery : "+ selectQuery);
 
    if(cursor != null)
        if(cursor.moveToFirst()){ // 반드시 이런 순서로 해야 문제가 없더라.
            do {
                // ArrayList에 추가
                int column_index = cursor.getColumnIndex(Column_history);
                sqliteDBData.add(cursor.getString(column_index));
            } while (cursor.moveToNext());
        }
    cursor.close();
    return sqliteDBData;
}
 

 

 전체 소스는 GitHub 에 올려진 코드를 참고하면 된다.

https://github.com/jsk005/JavaProjects/tree/master/sqlitedb

블로그 이미지

Link2Me

,