2011-10-04 6 views
0

내 데이터베이스의 모든 레지스터를 보여주는 내 기본 응용 프로그램에 쿼리가 있습니다.Android - 동적 쿼리를 실행할 매개 변수

내 응용 프로그램에 다른 활동으로 들어가는 버튼이 있습니다. 저기, 내 쿼리를 필터링 할 수 있습니다 (예를 들어, 나는 서점 테이블이 있고 저자와 특정 가격의 책을 원합니다)

그래서 회 전자로 내 옵션을 선택하고 추가로 넣어 변수를 내 주요 활동에 전달하면 필터링 된 쿼리가 표시 될 수 있습니다.

여기

String selGrado = this.getIntent().getExtras().getString("grado"); 


String query = "Select * FROM Incidentes WHERE 1=1"; 

    if() query+= " AND codGr='"+selGrado+"'"; 



    Cursor d = db2.rawQuery(query,null); 

그래서, 난 내 쿼리 내가 내 "필터"활동에 가득 매개 변수 selGrado으로 실행하고자하는 예입니다. 어떤 조건을 넣어야합니까? 응용 프로그램이 시작될 때 모든 레지스터를 표시하여 필터를 피하는 데 아무런 문제가 없기 때문에 Incidentes ..에서 Select *를 실행하고 쿼리 필터 물결 치는 경우 쿼리에서 내가 선택한 옵션을 알고 싶습니다. 내가받는 getExtra가 null인지 그와 비슷한 것이 있는지 묻는 방법이 있습니까? 감사

답변

0

예는 의도 방법 hasExtra 사용하여 엑스트라를 확인할 수 있습니다

this.getIntent().hasExtra("grado"); 

을하지만 selGrado이 할 수있는 더 나은 방법이 함께

if(selGrado!=null) 

null의 경우, 당신은 또한 확인할 수 있었다 rawquery 대신 일반 쿼리

String selection = null; 
String[] selectionArgs = null; 

if(getIntent().hasExtra("grado")) 
{ 
    selection = "codGr=?"; 
    selectionArgs = new String[]{getIntent().getStringExtra("grado")}; 
} 

Cursor c = db2.query("Incidentes",null,selection, selectionargs, null); 
+0

감사합니다.하지만 문제가 있습니다. 내가 처음 String 문자열을 넣었을 때 selGrado = this.getIntent(). getExtras(). getString ("grado"); 내 프로그램에 정보가 표시되지 않습니다. 그래서 내가 최근에 응용 프로그램을 열고 필터를 넣지 않았기 때문에 그 의도로 데이터가 없다면 내 쿼리가 중단됩니다. 그래서 hasExtra가 null인지 묻지 않습니다.이 문제를 해결하는 방법을 모릅니다. –

+0

hasExtra는 부울 값 (true 또는 false)을 반환하지 않습니다. 항상 사용할 수 있습니다. 이것이 true를 반환하면 그 여분을 가져와 null인지 확인하십시오. – Merlin

+0

감사합니다 !!! 나는 5 개의 포럼에서 질문했고, 단지 정확한 대답을했다! IT가 작동합니다! –

관련 문제