1

sqlite db からレコードを削除する必要があります。一度に 1 つのレコード行および/または特定の文字列値を持つすべてのレコード。私は多くの投稿を読みましたが、ほとんどが 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

ドキュメントによると、それはちょうどあるはずなので、 inDELETE FROM ...を削除してください。*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 に答える