2011-05-10 7 views
2

데이터베이스에 테이블이 있는데이 테이블을 한 행만 표시하려고합니다. 표에는 3 개의 필드 (ID, 제목 및 설명)가 있습니다. 제목에 따라 행을 필터링하고 싶습니다.데이터베이스의 쿼리 필터링 SQLite

커서 커서 = db.query (TABLE_NAME, ORDER_BY, NULL, NULL, NULL, NULL, FROM) :

이 코드를

여기서 세 번째 필드는 선택 필드 (문자열)입니다. 그러나 내가 보여주고 자하는 행만 선택하기 위해 정확히 무엇을 넣어야하는지 모르겠습니다. 감사합니다

+0

.? –

답변

6
String[] FROM = { // ID of the column(s) you want to get in the cursor 
     ID, 
     Title, 
     Description 
}; 

String where = "Title=?"; // the condition for the row(s) you want returned. 

String[] whereArgs = new String[] { // The value of the column specified above for the rows to be included in the response 
     "0" 
    }; 

return db.query(TABLE_NAME, FROM, where, whereArgs, null, null, null); 

이 모든 열이 당신에게 커서를 제공하지만 제목 열 값이 0

+0

고마워요! – danizp

+0

@ user736605 승인 된 답변으로 표시하는 것을 잊지 마십시오. :) 옆에있는 체크 표시를 누르십시오. – Klaus

+0

@TofferJ, 제목 또는 테이블 여기에 "테이블 열의 값이 0 인 곳"을 의미합니까! –

1

는이

Cursor cursor = db.query("TABLE_NAME",new String[]{"ColumnName"}, "ColumnName=?",new String[]{"value"}, null, null, null); 
+0

난 그냥 모든 테이블을 표시하지 행 또는 일부를 선택하려고하려고합니다. 예를 들어 제목이있는 행을 표시하려고합니다. TITLE = test – danizp

+0

내 편집 답변보기 ... –

0

당신이 할 수있는 동일 행을 포함해야한다 시도 SQLite에서 코드를 따라 검색;

MainActivity에서;

search.addTextChangedListener(new TextWatcher() { 
    public void afterTextChanged(Editable s) { 
    } 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
    } 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     adapter.getFilter().filter(s.toString()); 
    } 
}); 
adapter.setFilterQueryProvider(new FilterQueryProvider() { 
    public Cursor runQuery(CharSequence constraint) { 
     return 
//Here you can filter data by any row , just change text replace of "subject" 
dbManager.fetchdatabyfilter(constraint.toString(),"subject"); 
    } 
}); 

DatabaseHelper.java 당신이 원하는 행

public Cursor fetchdatabyfilter(String inputText,String filtercolumn) throws SQLException { 
Cursor row = null; 
String query = "SELECT * FROM "+DatabaseHelper.TABLE_NAME; 
if (inputText == null || inputText.length() == 0) { 
    row = database.rawQuery(query, null); 
}else { 
    query = "SELECT * FROM "+DatabaseHelper.TABLE_NAME+" WHERE "+filtercolumn+" like '%"+inputText+"%'"; 
    row = database.rawQuery(query, null); 
} 
if (row != null) { 
    row.moveToFirst(); 
} 
return row; 
}