1

需要从 sqlite db 中删除记录。一次一个记录行和/或具有特定字符串值的所有记录。我阅读了很多帖子,大多数似乎都是针对 Android 的,并且与普通的 Java 非常不同 - 没有找到我需要的东西。

这是我正在尝试的代码片段(delString 来自文本字段),我没有设置记录 ID。:

    Class.forName("org.sqlite.JDBC");
    Connection conn = DriverManager.getConnection("jdbc:sqlite:dufuss.db");

    delIt = Dialog_RecToDelete.delString; 
    String sql = "DELETE * FROM " + TABLE_NAME + " WHERE docName = ?";
    PreparedStatement preparedStatement = conn.prepareStatement(sql);
    preparedStatement.setString(1, delIt);
    ResultSet rs = preparedStatement.executeQuery();

    while (rs.next()) {
      // iterate through results
    }
  rs.close();
  conn.close();
4

2 回答 2

4

根据文档,它应该只是DELETE FROM ...,所以删除*in DELETE * FROM ...

此外,您应该使用PreparedStatement#executeUpdate而不是PreparedStatement#executeQuery

于 2013-06-18T22:01:59.157 回答
2

SQLite 对语法也很轻,他们不使用,*因为它是不必要的(谁只删除一列而不是整行?)。

因此,以下语法应该有效:

"DELETE FROM " + TABLE_NAME + " WHERE docName = ?"

另请注意,正如@damo 评论的那样,如果不是自动提交,您需要使用executeUpdate()而不是提交,并且可能需要提交。executeQuery()

更多关于 DELETE 语法的信息在这里

于 2013-06-18T22:03:15.563 回答