데이터베이스에 몇 가지 값이 있는지 확인하고 싶습니다. 일치하는 경우 메서드는 TRUE를 반환하고 커서가 null이면 FALSE를 반환합니다. 그러나 문제는 값이 데이터베이스에 없더라도 항상 TRUE를 반환한다는 것입니다. 나는 무엇을 놓쳤는가?값이 데이터베이스에 존재하는지 확인하십시오.
// This method check if the combination image path and contact name already exists in database
public boolean checkContentDatabase(String imageFilePath, String contactName) {
String query = "Select * from " + DB_TABLE+ " where " + TABLE_IMAGE_PATH + "='" + imageFilePath + "' and " + TABLE_CONTACT_NAME + "='" + contactName +"' ;";
Cursor c = db.rawQuery(query, null);
if(c != null) // Exists in database
{
return true;
}
else
{
return false;
}
}
또는 "SELECT COUNT (*) "이므로 DBMS는 작업의 더 큰 부분을 수행합니다. –
Count (*)를 사용하면 DBMS가 실제로 수행 할 작업이 있습니다. 테이블에 많은 행이 있고 WHERE 절이 매우 제한적 일 때 DBMS는 무언가를 계산할 시간이 많이 필요합니다. 무언가가 존재하고 얼마나 많은 것이 아닌지 알고 싶기 때문에 전혀 흥미롭지 않습니다 . –
슬프게도, 당신 말이 맞아요. 'IS EMPTY' 나 이와 비슷한 것이 있다면 ... 그러나 그것은 SQL에 부울 값을 요구합니다. –