2011-07-30 5 views
7

특정 ID를 기반으로 데이터베이스를 쿼리하려고합니다. 이 활동이 실행 된 것은 이번이 처음 인 경우Android SQL : 데이터베이스에 레코드가 존재하는지 확인하십시오.

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

는, 테이블은 id 컬럼과 함께 존재하지만 특정 ID로 기록이되지 않습니다. 해당 레코드가 존재하는지 어떻게 확인할 수 있습니까? 그렇지 않은 경우 추가 할 수 있습니까? 특정 열이 존재하는지 확인하는 것에 관해서는 많은 것을 발견했지만 특정 레코드가 있는지 확인하는 것에 대해서는 아무것도 발견하지 못했습니다.

지금까지 id 열 인덱스를 가져 와서 -1을 반환하는지 확인하려고 시도했지만 실제로 어떤 이유로 든 1을 반환합니다. if 문에서 id 열이 아직 생성되지 않았 음을 확인하기 위해 사용할 수있는 것은 무엇입니까?

답변

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

완벽한, 감사합니다. – ryandlf

0

내 코드는 다음과 같습니다

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; 

     } 
    } 
관련 문제