2012-03-07 91 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. 

}