2010-08-25 75 views
0

我米试图删除通过Android应用程序一个SQLiteDB的记录,这是我使用的代码删除的记录安卓:SQLite的无法删除特定的记录

 
//Snippet of code in my DBAdapter Class 

public boolean DeleteRecord(String ContactName) { 

    Log.i(TAG, "DeleteRecord(String ContactName)"); 
    Log.i(TAG, ContactName); 
    return db.delete(TABLE_SIMPLETABLE_CLIENT1,KEY_EMPLOYEE_NAME + "=" 
      +ContactName,null); 
    } 

,并从道路另一个类,我试图调用打开数据库,并调用此方法,并再次关闭DB这种方法,这是多么我已经编码,

//代码片段在我DBApplication类

 
public void onClick(DialogInterface dialog, 
    int which) { 
DBAdapter.open(); 
DBAdapter.DeleteRecord(DeleteRecord); 
//DeletRecord is string value that in DB(Sivaram)      
DBAdapter.close(); 
} 

当我部署它,我一收到以下错误,

 
08-25 14:52:20.602: ERROR/AndroidRuntime(231): android.database.sqlite.SQLiteException: no such column: Sivaram: , while compiling: DELETE FROM SimpleTable1 WHERE Employee_Name=Sivaram 

请帮助我,找到了解决办法提前

谢谢...

+2

这真的是社区wiki的价值吗? – WarrenFaith 2010-08-25 10:53:13

回答

8
Edit- 

试试这个,CHK如果它工作第一

return db.delete(TABLE_SIMPLETABLE_CLIENT1,KEY_EMPLOYEE_NAME + "='"+ContactName+"'",null); 

在这里你的字符串应该是在你的where子句(第3位),你只需要到提到你的表名作为你的第二个参数,我相信

delete(String tableName, String whereClause, String[] whereArgs) {} 
return db.delete(TABLE_SIMPLETABLE_CLIENT1,KEY_EMPLOYEE_NAME,new String[]{ContactName}); 
+0

谢谢Rahul,你的努力帮了我很多,现在它工作正常,谢谢你的支持.... – 2010-08-25 10:31:56

5

我想你已经通过了错误查询如

DELETE FROM SimpleTable1 WHERE Employee_Name=Sivaram; 

它必须是这样的。

DELETE FROM SimpleTable1 WHERE Employee_Name='Sivaram'; 

检查它。 ''是必须为Text数据类型

+0

@Nandagopal T:使用位置参数('从DELETE FROM SimpleTable1 WHERE Employee_Name =?')是避免犯这个错误的好方法。 – CommonsWare 2010-08-25 09:43:02

+0

嗨,大家好,非常感谢您的大力响应,但你可以请告诉我如何使用你的想法在我的例子,因为我尝试使用 db.delete(TABLE_SIMPLETABLE_CLIENT1,KEY_EMPLOYEE_NAME +“=” \t \t \t \t +' ContactName',null); ,这样我试图使用,它显示我的错误为无效的字符常量....请帮我... – 2010-08-25 10:12:28

+0

单引号应该在双引号内:db.delete(TABLE_SIMPLETABLE_CLIENT1,KEY_EMPLOYEE_NAME +“=' “+ ContactName +”'“,null) – Intrications 2010-08-30 10:24:49

0

你可以写下面查询由paasing的数据字符串,删除记录,并基于u可以从表中删除记录在数据库

// delete a title by string name specified 
public Cursor deleteTitle(String i) 
{ 
    return db.query(true, DATABASE_TABLE, new String[] { Key_RowID }, 
     Key_Name + "= ?", new String[] { Key_Name.toString() }, null, null, 
     null, null); 
} 

与qyery的问题,就是你还没有转换您的姓名字段数据库字符串即KEY_NAME。的toString()

尝试了这一点,这可能有助于

0
public boolean deletename(String rowid) { 
    return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowid, null) > 0; 
} 

试试这个代码其工作对我罚款。它使用唯一的行ID删除记录。行是我的主键。

现在如果你想删除使用任何以外的rowid。

试试这个

public boolean deletename(String eid) { 
    getrowid(eid); 
    return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + zCursor.getString(0).toString(), null) > 0; 
} 
public Cursor getrowid(String e_id) throws SQLException { 
    //System.out 
    // .println("---------------================Employee ID:" + e_id); 
    zCursor = db.query(true, DATABASE_TABLE, new String[] { KEY_ROWID }, 
    KEY_EID + "= ?", new String[] { e_id.toString() }, null, null, 
    null, null); 
    if (zCursor != null) { 
    zCursor.moveToFirst(); 
    //System.out.println("---------------================" 
    // + zCursor.getString(0)); 
    } 
    return zCursor; 
} 

这里我使用的是雇员删除我的员工记录。所以我找到了独特的rowid,这是我给定记录的主键,然后删除记录。

+0

谢谢你,我的工作也很棒,因为你的回应...很多... – 2010-08-25 11:19:11