2015-04-24 1 views
-1

Я проверяю, если запись sqlLite таблица доступна или нет, это дает мне, что запись доступна, даже если это неAndroid SQLite Проверить Если существует запись не работает

public void checkIfExcist(Context mCtx, String recordName, String ValueCheck) { 

    DatabaseHelper mDbHelper = new DatabaseHelper(mCtx); 
    SQLiteDatabase mDb = mDbHelper.getWritableDatabase(); 

    Cursor mCursor = mDb.rawQuery("SELECT * FROM " + SQLITE_TABLE 
      + " WHERE " + recordName + " ='" + ValueCheck + "'", null); 

    if (mCursor != null) { 

     Toast.makeText(mCtx, "Available", 3000).show(); 
     /* record exist */ 
    } else { 
     Toast.makeText(mCtx, "Not Available", 3000).show(); 
     /* record not exist */ 
    } 

} 
+2

пустой результирующий набор по-прежнему действительный результат, который просто не имеет строк ... не проверяйте, существует ли курсор, проверьте, есть ли в результирующем наборе какие-либо строки. –

+0

Я понял вас, не могли бы вы помочь мне с sql-запросом? –

+0

Запрос остается без изменений. Это условие, которое вы должны изменить. –

ответ

0

rawQuery всегда будет возвращать a cursor, даже если он пуст (который отличается от null). Вот почему он всегда будет проходить ваш null чек.

This должен ответить на ваш вопрос.

+0

, который отлично работал для меня. спасибо –

+0

@YahyaZakariya Рад это слышать - пожалуйста, примите ответ, если он сработает для вас. – PPartisan

1

Вместо проверки курсора недействительности, проверьте, если количество записей больше 0.
Другими словами, это изменить

if (mCursor != null) { 

к этому

if(mCursor.getCount() > 0) { 
Смежные вопросы