2013-02-19 4 views
0

의 몇 가지 열 세부 정보가있는 행의 listview에 표시하는 방법은 다음과 같습니다 응용 프로그램 이름 (KEY_NAME), application_category (KEY_CATEGORY) 및 application_permissions (KEY_PERM)의 세부 정보를 얻으려고 시도하는 코드입니다)안드로이드 sqlite 데이터베이스

하지만 정말 내가 원하는 내가 목록보기

핸들러

public Cursor queueAll() { 
     String[] columns = new String[] { KEY_ID, KEY_NAME, KEY_CATEGORY, 
       "count" + KEY_PERM }; 
     Cursor cursor = sqlitedb.query(MYDATABASE_TABLE, columns, null, null, 
       KEY_NAME, null, null); 
     return cursor; 
    } 
에 표시하는 것이 내가 할 수있는 방법 권한의 수 (카운트)
를 표시하는 응용 프로그램 이름 및 카테고리 함께

주요 활동

mySQLiteAdapter = new Handle(this); 
     mySQLiteAdapter.openToWrite(); 
     cursor = mySQLiteAdapter.queueAll(); 
     String[] from = new String[] { Handle.KEY_NAME, Handle.KEY_PERM, 
       Handle.KEY_CATEGORY }; 
     int[] to = new int[] { R.id.appname, R.id.numbpermcount, R.id.category }; 
     cursorAdapter = new SimpleCursorAdapter(this, 
       R.layout.activity_main_row, cursor, from, to); 
     listContent.setAdapter(cursorAdapter); 

미리 감사드립니다.

나는 이것을 다시 시도했다.

처리기

public static final String KEY_ID = "_id"; 
public static final String KEY_NAME = "application_name"; 
public static final String KEY_PACK = "application_package"; 
public static final String KEY_PERM = "application_permission"; 
public static final String KEY_LEVEL = "application_level"; 
public static final String KEY_CATEGORY = "application_category"; 

public Cursor queueAll() { 
     String[] columns = new String[] { KEY_ID, KEY_NAME, KEY_CATEGORY, 
       "count(" + KEY_PERM +")" }; 
     Cursor cursor = sqlitedb.query(MYDATABASE_TABLE, columns, null, null, 
       KEY_NAME, null, null); 
     return cursor; 
    } 

주요 활동

는 ... 상기와 동일하게입니다

ERROR

02-19 22:51:04.049: E/AndroidRuntime(1192): java.lang.RuntimeException: Unable to start activity ComponentInfo{db.database/db.database.MainActivity}: java.lang.IllegalArgumentException: column 'application_permission' does not exist 
+0

'count (permissions) '가 하위 쿼리 여야합니까? – Sam

+0

당신의 열이 다음과 같을 필요가 있다고 생각합니다 : String [] columns = new String [] {KEY_ID, KEY_NAME, KEY_CATEGORY, "count ("+ KEY_PERM + ")"}; –

답변

1

나는 무엇을 당신이하려는 것은 생각 약간은 내장 된 query 방법으로 할 수있는 것 이상입니다. 대신 임의의 SQL을 전달할 수있는 rawquery이 필요합니다. 그것은 당신이

public static final String KEY_ID = "_id"; 
public static final String KEY_NAME = "application_name"; 
public static final String KEY_PACK = "application_package"; 
public static final String KEY_PERM = "application_permission"; 
public static final String KEY_LEVEL = "application_level"; 
public static final String KEY_CATEGORY = "application_category"; 

public static final String KEY_PERM_COUNT = "application_permission_COUNT"; 

public Cursor queueAll() { 
    Cursor cursor = sqlitedb.rawquery(
     "SELECT "+KEY_ID+", "+KEY_NAME+", "+KEY_CATEGORY 
     +", count("+KEY_PERM+") AS "+KEY_PERM_COUNT 
     +" FROM "+MYDATABASE_TABLE 
     +" GROUP BY "+KEY_ID+", "+KEY_NAME+", "+KEY_CATEGORY 
    ); 
    return cursor; 
} 

필요 그리고 또한 Handle.KEY_PERM_COUNT을 읽어 어댑터를 설정처럼 들린다.

+0

친구에게 감사드립니다 ... 잘 작동합니다. 원시 쿼리에 대해 가르쳐 주셔서 감사합니다. :) – Romi

관련 문제