2012-10-01 2 views
1

값이 열에 있는지 확인하려고합니다. 예를 들어, 열 artId에 숫자 값이 있는지 확인하고 싶습니다.특정 값이 열에 있는지 여부를 확인하는 방법은 무엇입니까?

entryId
getStar = db.query(TABLE_NAME, new String[] { "artId" }, 
         "artId = " + entryId, null, null, 
         null, null); 
     getStar.moveToFirst(); 
     String star = getStar.toString(); 
     Log.w("ID COUNT", star); 
     if(getStar != null) { 
      // do something 
     } 

일부 번호 : 나는 다음과 같은 코드를 사용하고 있습니다.

그러나 나는 항상이 같은 얻을 :

W/ID COUNT(11303): [email protected]합니다.

또한 내가 사용하려고 :

getStar = db.rawQuery("SELECT count(*) FROM " 
+ TABLE_NAME + " WHERE artId = '" + entryId + "'", null); 

를하지만 같은 결과를 얻었다.

여러분의 도움을 바랍니다.

답변

5

은 오류가 없기 때문에 Cursor는, 그래, 유효 (null 비)입니다 . 대신 데이터가 있는지 확인하십시오.

getStar = db.rawQuery("SELECT count(*) FROM " + TABLE_NAME + " WHERE artId = '" + entryId + "'", null); 
getStar.moveToFirst(); 
if (getStar.getInt(0)) { // This will get the integer value of the COUNT(*) 
    // It has data 
} 

나는 위의 결과를 조금 확신하지 못합니다. 대신 결과 수를 질의 할 수 있습니다.

getStar = db.rawQuery("SELECT * FROM " + TABLE_NAME + " WHERE artId = '" + entryId + "'", null); 
if (getStar.getCount() > 0) { // This will get the number of rows 
    // It has data 
} 
+0

Upvote를'if (getStar.getCount()> 0)'로 업데이트했습니다. – Sam

+0

도움 주셔서 대단히 감사합니다. 그것은 작동합니다. – Sabre

+0

첫 번째 솔루션도 효과가 있습니다. 최소한 값이 존재하지 않을 때와 존재하는 값이 하나뿐입니다. – Sabre

0

artId 열의 값이 아닌 String 커서를 기록하고 있습니다. 는이 같은 뭔가가 커서에서 열 artId의 값을 얻으려면 :

int count = -1; 
// if the cursor is not empty 
if(getStar.moveTofirst()) 
    count = getStar.getInt(getStar.getColumnIndex("artId"); 

if(count != -1) 
    // do something 
+0

당신을 바로 잡으십시오. 'artId'는 값이 아닌 컬럼 이름입니다 – Sabre

+0

맞습니다. 내 코드 – florianmski

1

moveTofirst() 메소드 (기반 0) 첫 번째 위치로 커서를 이동하려고하고 할 수있는 경우는 true를 반환 끝내라. 그렇지 않은 경우는 false를 리턴합니다. 그래서 당신은 그렇게 할 수있는 :

if (getStar.moveToFirst) { 
// your code 
} else {} 

을 문이 실행될 경우 값이있는 경우 그렇지 않으면하지 않습니다

관련 문제