2011-07-30 15 views
7

Próbuję zapytać o moją bazę danych w oparciu o konkretny identyfikator.Android SQL: Sprawdź, czy rekord w bazie danych istnieje

String sql = "SELECT * FROM mash WHERE recipe_id = '" + id + "'"; 
Cursor data = database.rawQuery(sql, null); 

Jeśli jest to po raz pierwszy działalność została uruchomienia, tabela będzie istnieć wraz z kolumną ID, ale nie będzie to płyta z konkretnym identyfikatorze. Jak mogę sprawdzić, czy ten konkretny rekord istnieje, a jeśli nie, czy go dodać? Znalazłem wiele do sprawdzenia, czy istnieje konkretna kolumna, ale nie ma nic o sprawdzeniu, czy istnieje konkretny zapis.

Do tej pory próbowałem uzyskać indeks kolumny id i sprawdzając, czy zwraca -1, ale faktycznie powraca 1 z jakiegoś powodu. Co mogę użyć w instrukcji if, aby sprawdzić, czy kolumna identyfikatora nie została jeszcze utworzona?

Odpowiedz

19
if (cursor.moveToFirst()) { 
    // record exists 
} else { 
    // record not found 
} 
+0

Perfect, dzięki. – ryandlf

0

Mój kod to:

public void addContact(String a, String b, String c, String d, SQLiteDatabase db) 
    { 
     //cursor is use to check if data is availble then show row is exist if not then execute insert query. 
     Cursor mCursor = db.rawQuery("SELECT * FROM " + TABLE_CONTACTS + " WHERE email=? ", new String[]{b}); 

     if (mCursor.moveToFirst()) 
     { 
      value=false; 
      Toast.makeText(context,"Email alreay exist please enter anothe email id",Toast.LENGTH_LONG).show(); 
     } 
     else 
     { 
      ContentValues values = new ContentValues(); 

      values.put(Database_Handler.NAME, a); // Contact Name 
      values.put(Database_Handler.EMAIL, b); 
      values.put(Database_Handler.PASSWORD, c); 
      values.put(Database_Handler.NUMBER, d); 

      db.insert(Database_Handler.TABLE_CONTACTS, null, values); 
      Log.e("DATABASE OPERATION", "One row is insert"); 

      Toast.makeText(context,"Data insert Sucessfully",Toast.LENGTH_SHORT).show(); 
      db.close(); 
      value=true; 

     } 
    } 
Powiązane problemy