2016-03-05 58 views
0

嘗試使用ID查詢刪除表中的行。假設id不存在,那麼如何知道id或行信息不存在?下面Android SQLite:在刪除行之前如何知道數據存在

代碼:

public void deletePerson(String personId){ 
     SQLiteDatabase sqldb = getWritableDatabase(); 
     sqldb.execSQL("DELETE FROM " + TABLE_NAME + " WHERE " + COLUMN_NAME + " = '" + personId+"'"); 
     Toast.makeText(context,"Record removedId", Toast.LENGTH_SHORT).show(); 
    } 

回答

1
public boolean getPerson(String personId){ 
    SQLiteDatabase sqldb = getWritableDatabase(); 
    Cursor c=  sqldb.execSQL("SELECT * FROM " + TABLE_NAME + " WHERE " + COLUMN_NAME + " = '" + personId+"'"); 
    if(c!=null){ 
     return true; 
    } 
    return false; 
} 
+0

嘗試過,但時間已過(需要在2分鐘內接受) – HackImti

1

你不一定需要知道,DELETE不會失敗,如果沒有記錄符合地方標準。

0

您可以創建一個函數,它基於sqlite中數據的存在性返回boolean value

public boolean isExists(String personId) 
{ 
    SQLiteDatabase sqldb = getWritableDatabase(); 
    String selectString = "SELECT * FROM " + _TABLE + " WHERE " + _ID + " =?"; 
    Cursor cursor = sqldb.rawQuery(selectString, new String[] {personId}); 

    boolean isExist = false; 

    if(cursor.moveToFirst()){ 
     isExist = true; 
    } 

    sqldb.close();    
    return isExist; 
} 

參考Android SQLite Database CRUD

0

好吧,讓所有的答案後,我解決我的問題,我所做的是:

public void deletePerson(String personId){ 
     SQLiteDatabase sqldb = getWritableDatabase(); 
     Cursor cursor = sqldb.rawQuery("SELECT " + COLUMN_NAME + " FROM " + TABLE_NAME + " WHERE " + COLUMN_NAME + " = '" + personId + "'", null); 
     if(cursor.getCount()!=0){ 
      sqldb.execSQL("DELETE FROM " + TABLE_NAME + " WHERE " + COLUMN_NAME + " = '" + personId + "'"); 
      Toast.makeText(context,"Successfully deleted", Toast.LENGTH_SHORT).show(); 
     }else{ 
      Toast.makeText(context,personId+" not found", Toast.LENGTH_LONG).show(); 
     } 
    } 

謝謝!

+0

您確實**不需要**知道在刪除(或更新)它之前是否存在記錄。試着刪除它。如果記錄不存在,則DELETE(和UPDATE)將優雅地失敗並且沒有錯誤。 –

+0

我想讓用戶知道他試圖刪除的數據不存在。 – HackImti

+0

這不是一個有用的信息。不要浪費** CPU時間。 –

相關問題