Android:SQLite无法删除特定记录

时间:2010-08-25 09:29:33

标签: android sqlite

我试图通过Android应用程序从SQLiteDB中删除记录,这是我使用代码删除记录的方式

//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);
    }

从另一个类,我试图通过打开数据库并调用此方法并再次关闭数据库来调用此方法,这就是我编码的方式,

//我的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

请帮助我找出解决方案

提前致谢...

4 个答案:

答案 0 :(得分:8)

Edit-

试试这个,如果它先工作,请尝试

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

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

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

答案 1 :(得分:5)

我认为您传递了错误的查询。赞

DELETE FROM SimpleTable1 WHERE Employee_Name=Sivaram;

一定是这样的。

DELETE FROM SimpleTable1 WHERE Employee_Name='Sivaram';

检查一下。 ''数据类型

必须Text

答案 2 :(得分:0)

你可以写下面的查询来删除记录,方法是将数据作为字符串,并根据你可以从数据库中的表中删除记录

// 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()

试试这可能会有所帮助

答案 3 :(得分:0)

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

试试这个代码,它对我来说很好。它使用唯一行ID删除记录。其中row是我的主键。

现在如果要使用除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;
 }

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