2012-03-07 124 views
1

我需要從sqlite中刪除特定記錄。但是下面的代碼不能刪除它。
請給我一些提示。如何從SQLite中刪除特定的記錄?

public void delete(String Id) 
{ 
    try { 

     db.delete(MySQLiteHelper.TABLE_NAME, "Id=?", 
       new String[] { Id.toString() }); 
    } 
    catch(Exception e) { ... } 

} 
+0

試着看看他的數據庫,看看你是否在做它co rrectly。正確地說,我的意思是將它映射到正確的表名/列/值。 – JoxTraex 2012-03-07 11:38:00

+0

http://android-er.blogspot.in/2011/06/delete-row-in-sqlite-database.html http://stackoverflow.com/questions/4850137/android-sqlite-delete-row-issue – 2012-03-07 11:39:45

+0

您是否嘗試過不吞嚥異常? – 2012-03-07 11:47:20

回答

4

嘗試這樣的:

public void delete(String Id) 
{ 
    try { 

     db.delete(MySQLiteHelper.TABLE_NAME, "Id="+Id, null); 
    } 
    catch(Exception e) { ... } 
} 
+0

它不起作用。 – 2012-03-07 11:47:27

+0

whar錯誤你得到了嗎? – Natali 2012-03-07 11:57:14

+0

沒有任何錯誤。但我不知道確切的problem.here是我更新...公共無效刪除(int值) \t { \t嘗試{ 分貝。execSQL(「從TABLE_NAME刪除,其中COLUMN_ID =」+ value); \t} \t趕上(例外五){} \t} – 2012-03-07 12:22:35

1

我認爲,你可以執行簡單刪除SQL查詢,如:

"DELETE FROM tablename WHERE id = ?" 

,並通過id的值作爲參數傳遞給該查詢。 ..

5

(已更新)您應該使用:

db.delete(MySQLiteHelper.TABLE_NAME, "Id=?", new String[] { Id }); 

而實際上它是建議使用沒有 '身份證',但BaseColumns._ID,這等於 「_id」。

編輯:爲未來的用戶。

是什麼下列方法之間的區別:

1. db.delete(MySQLiteHelper.TABLE_NAME, "_id=" + Id, null); 
2. db.delete(MySQLiteHelper.TABLE_NAME, "_id=?", new String[] {Id}); 
3. db.delete(MySQLiteHelper.TABLE_NAME, TABLE.ID_COLUMN_NAME + "=?", new String[] {Id}); 

我可以說,所有他們的工作很好。第一種方法和第二種方法的不同之處在於通常第二種方法比第一種方法更快並且更安全。爲什麼更快?因爲Android可以創建參數化查詢的緩存,所以此參數化查詢在第一次後會更快。 Android無法創建第一個查詢的緩存。爲什麼更安全?它沒有SQL注入。

第二種方法和第三種方法的區別在於ID列名在所有查詢中都沒有進行硬編碼。您只需簡單地定義此字段一次,然後如果列名更改,則只需在一個位置更改它。

+0

它不工作.. – 2012-03-07 11:40:00

+0

我使用mDb.delete(「TABLE_NAME」,TABLE.ID +「=?」,new String [] {String.valueOf(rowId)});它正在工作。如果它不工作,那麼可能在其他地方出錯。 – Yury 2012-03-07 11:45:13

+1

對不起,你的case參數是一個字符串,所以你應該使用: db.delete(MySQLiteHelper.TABLE_NAME,「Id =?」, new String [] {Id}); – Yury 2012-03-07 11:46:13

2
try { 
    myDB = myDbHelper.openDataBase(); 
} catch (SQLException sqle) { 
    throw sqle; 
} 
String strFilter = "ID =" + ID; 
myDB.delete("Table1, strFilter, null); 
myDB.close(); 
1

使用此
其中

ourDatabase ="your database name" 
    KEY_ROWID="rowid" of your database 
& int l=rowid number of which data you want to delete 
    ourDatabase.delete(DATABASE_TABLE, KEY_ROWID+"="+l, null); 

如果你把空的,而不是KEY_ROWID +「=」 + 1比它刪除所有數據

0

你可以試試下面的代碼刪除的記錄在數據庫中

public void deleteRowFromTable(String tableName, String columnName, String keyValue) { 
mSQLiteDatabase = getWritableDatabase();//To delete , database should be writable. 
    String mColumName= columnName + "=?"; 
    String[] whereArgs = new String[]{String.valueOf(keyValue)}; 
    mSQLiteDatabase.delete(tableName, mColumName, whereArgs); 
mSQLiteDatabase.close();//This is very important once database operation is done. 

}