【问题标题】:Android Delete row from local databaseAndroid 从本地数据库中删除行
【发布时间】:2014-02-24 07:17:11
【问题描述】:

我正在尝试从本地数据库中删除记录..我可以在哪里更新记录但无法删除记录..我没有收到任何错误但仍然没有从本地数据库中删除记录..这是代码..

db.deleteReading(complaintNo);

public void deleteReading(String id) {

    SQLiteDatabase db = this.getWritableDatabase();
    db.delete(TABLE_READINGS, COLUMN_COMPLAINT_NO  +"="+ id, null)  ;  //COLUMN_COMPLAINT_NO is available in my readings table
    db.close();

}

请指导我哪里出错了

【问题讨论】:

  • 需要交易吗?
  • 试试这个,int result = db.delete(TABLE_READINGS, COLUMN_COMPLAINT_NO +"="+ id, null); 并打印result 的值。如果是0,则表示您的行没有被删除。首先检查这部分。
  • hiie Kedarnath,感谢您的回复.. 是的,我收到的回复为 0 .. 它没有被删除
  • 0 表示它没有从数据库中删除。投诉号的数据类型是什么?
  • 它的数据类型是TEXT

标签: java android mysql sql eclipse


【解决方案1】:

问题是您没有将字符串括在单引号中:

db.delete(TABLE_READINGS, COLUMN_COMPLAINT_NO  +"='"+ id + "'", null);

或者您可以使用更常用的方法,并将字符串作为“where arg”传递:

db.delete(TABLE_READINGS, COLUMN_COMPLAINT_NO  +"=?", new String[] {id});

【讨论】:

  • 是的,我试过了,但仍然没有删除记录。当我将 id 的值作为硬编码时,它会被删除。我还通过在日志中打印它来检查 id 的值跨度>
  • 所以如果你将id的值打印到日志中,它会给你MyValue,如果你在代码中用COLUMN_COMPLAINT_NO + "='MyValue'"替换它,它会删除记录吗?你能发表你的 CREATE TABLE 声明吗?
  • String CREATE_PRODUCTS_TABLE = "CREATE TABLE " + TABLE_READINGS + "(" + COLUMN_ID + " INTEGER PRIMARY KEY," + COLUMN_STATUS + " INTEGER," + COLUMN_CON_NUMBER + " TEXT," + COLUMN_REMARK + " TEXT, " + COLUMN_COMPLAINT_NO + " TEXT" + ")";
  • 我猜你给 deleteReading 函数的参数和数据库中的实际数据 - 例如空格字符之间存在一些差异。你能显示Log.e("TAG", "*" + id + "*");的输出吗?
  • 是的,当然.. 在这里.. 02-24 14:25:58.381: E/TAG(11991): 31657
【解决方案2】:

我认为问题出在您的查询中..

int temp=db.delete(TABLE_READINGS, COLUMN_COMPLAINT_NO  +"="+ id, null)  ;
Log.d("query value",temp);

试试这个

int temp=db.delete(TABLE_READINGS, COLUMN_COMPLAINT_NO  +"='"+ id+"'", null)  ;
///////// print it in logcat
Log.d("query value",temp);

【讨论】:

  • 在这两种情况下你都得到 0?
猜你喜欢
  • 2014-12-29
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多