【问题标题】:Deleting from SQLite in Android在 Android 中从 SQLite 中删除
【发布时间】:2013-12-19 21:34:10
【问题描述】:

我有一个 SQLite 数据库,其中有一个名为“students”的表。在学生表中,有 2 列:“student_id”和“student_name”。

我正在尝试使用以下代码从 SQLite 表中删除一行:

String TABLE_STUDENTS = "students";
String COLUMN_STUDENTNAME= "student_name";

public void deleteUser(String name) {
    database.delete(TABLE_STUDENTS, COLUMN_STUDENTNAME + "=" + name, null);
}

但是,当我尝试删除用户“John”时,我从 LogCat 收到此错误消息

12-19 16:28:47.132: E/SQLiteLog(14883): (1) no such column: John

我试图按照此处的示例:Deleting Row in SQLite in Android,但我可以发誓我的语法是相同的。

猜我在做一些愚蠢的事情,但有人能帮忙吗?谢谢。

【问题讨论】:

  • 下面的答案效果很好。我想要的另一种工作方式是database.delete(TABLE_STUDENTS, COLUMN_STUDENTNAME + "=\"" + name + "\"", null);我忘了在它周围加上引号。谢谢大家。
  • 这是你不应该做的事情:bobby-tables.com(有些人的名字中有',这会破坏你的代码)

标签: java android sqlite


【解决方案1】:

你可以试试:

database.delete(TABLE_STUDENTS,COLUMN_STUDENTNAME +" = ?", new String[] { name });

【讨论】:

  • 像魅力一样工作。谢谢!
【解决方案2】:

您正在做的是发送等效语句DELETE FROM students WHERE student_name=John,这就是它寻找名为 John 的列的原因。你需要使用方法的第三个参数来提供参数,所以:

final String[] deleteConditions = new String[]{ name };
database.delete(TABLE_STUDENTS, COLUMN_STUDENTNAME + "=?", deleteConditions);

请注意,您可以通过向数组 deleteConditions 添加更多条目来删除多行。

【讨论】:

  • “请注意,您可以通过向数组 deleteConditions 添加更多条目来删除多行” - 请解释一下,在这种形式中会产生误导。
【解决方案3】:

这很有效,虽然我会推荐

db.delete(TABLE, "column_name=?", new String[] { String.valueOf(custname) });

或使用

String query = "DELETE FROM " +TABLE_NAME+ " WHERE "  + COLUM_NAME+ " = " + "'"+VALUE +"'" ;
db.execSQL(query);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2019-11-07
    • 2015-09-11
    相关资源
    最近更新 更多