如何在Android中删除一行?

如何在Android中删除一行?,android,sqlite,Android,Sqlite,在android上删除ListView中的一行时出现问题,我使用的是SQLite 这是我的类删除文件(只需要删除数据库中的项) 在课堂上,我呼吁使用这个 dao.deleteCallWhenUploadSuccess(filename); 但它抛出了一个例外: e: "sqlite.SQLiteException: near "2016": syntax error (code 1):, while compiling: DELETE FROM recordStatus WHERE file

在android上删除
ListView
中的一行时出现问题,我使用的是SQLite

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

在课堂上,我呼吁使用这个

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附近

我试图补充:

String where=CallDatabaseHelper.FILE_NAME+“=”+“+filenamewis;


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

您可以更轻松地删除此文件

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

  • 我会做一个控制台日志,在函数顶部显示文件名,这样您就知道它的格式正确
  • 正如在另一个答案中指出的,您还需要获得一个可写数据库
  • 在查询中使用Where和Where:

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

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

我不知道您的合同。CallDatabaseHelper.CONTENT\u URI
是什么意思?
db = callDatabaseHelper.getWriteableDatabase();
String where = CallDatabaseHelper.FILE_NAME + " = ?";
String [] whereArgs = new String[] {fileNameWhis}
db.delete(CallDatabaseHelper.TABLE_NAME, where, whereArgs);