如何在Android中删除一行?

时间:2016-03-16 18:23:54

标签: android sqlite

我在使用SQLite删除ListView中的行时遇到问题,我正在使用SQLite。

这是我的类删除文件(只需删除数据库中的项目)。

    public void deleteCallWhenUploadSuccess(String fileNameWhis)
    {
        db = callDatabaseHelper.getReadableDatabase();
        String where = CallDatabaseHelper.FILE_NAME + "=" + fileNameWhis;
        db.delete(CallDatabaseHelper.TABLE_NAME, where, null);
    }

在课堂上,我打电话来使用它。

dao.deleteCallWhenUploadSuccess(filename);

但它抛出异常:

e: "sqlite.SQLiteException: near "2016": syntax error (code 1):, while compiling:

DELETE FROM recordStatus WHERE fileName=109092 2016-03-17 01.018.03.mp3"

"

附近看到WHERE "fileName标记丢失

我试图添加:

String where = CallDatabaseHelper.FILE_NAME + "=" + "'"'" + fileNameWhis;

但错误仍然存​​在。如何传递此错误?并使用DELETE语句删除fileName的文件,在这种情况下,fileName中有多个空格和特殊字符?

2 个答案:

答案 0 :(得分:1)

一些事情:

  • 我会做一个控制台日志,它会在函数顶部吐出文件名,所以你知道它的格式正确
  • 正如在另一个答案中指出的那样,你还需要一个可写的数据库。
  • 在查询中使用Where和WhereArgs:

    db = callDatabaseHelper.getWriteableDatabase();
    String where = CallDatabaseHelper.FILE_NAME + " = ?";
    String [] whereArgs = new String[] {fileNameWhis}
    db.delete(CallDatabaseHelper.TABLE_NAME, where, whereArgs);
    

这是一种更安全的查询方式,可以解决您的问题。

答案 1 :(得分:0)

您可以更轻松地删除它

 db.delete(CallDatabaseHelper.TABLE_NAME, CallDatabaseHelper.FILE_NAME  + "=?", new String[]{fileNameWhis});