PrepareStatement does not work with sqlite

I am trying to use prepareStatement to query sqlite, but I have an exception:

java.sql.SQLException: not supported by PreparedStatment
    at org.sqlite.PrepStmt.unused(PrepStmt.java:328)
    at org.sqlite.PrepStmt.executeUpdate(PrepStmt.java:314)

I am developing my program using Eclipse, so when I click on at org.sqlite.PrepStmt.unused(PrepStmt.java:328), it redirects me to PrepStmt.classthat inside it I found them:

@Override
public int executeUpdate(String sql) throws SQLException {
    throw unused();
}
private SQLException unused() {
    return new SQLException("not supported by PreparedStatment");
}

This is my code:

public static void deleteOp(String word) throws Exception {
    Connection c = null;
    PreparedStatement stmt = null;
    try {
      Class.forName("org.sqlite.JDBC");
      c = DriverManager.getConnection(connectionString);
      c.setAutoCommit(false);
      System.out.println("Opened database successfully");

      String sql = "DELETE from " + tableName + " where WORD = ? ;";
      System.out.println(sql);
      stmt = c.prepareStatement(sql);
      stmt.clearParameters();
      stmt.setString(1, word);
      stmt.executeUpdate(sql);
      c.commit();

      stmt.close();
      c.close();
    } catch ( Exception e ) {
        throw e;
    }
    System.out.println("Operation done successfully");
}

I want to know something is wrong in my code, or does Sqlite not support prepareStatement at all, or is there a problem with my driver (for example, due to obsolescence)?

+4
source share
2 answers

PreparedStatementlives a slightly double life: he extends Statementand thus inherits the methods of this class: - although some of them do not make much sense for PreparedStatement.

executeUpdate(String) Statement , ?. , : executeUpdate(), PreparedStatement. , , , Statement!

+2

sql executeUpdate, prepareStatement, :

stmt.executeUpdate();
+5

Source: https://habr.com/ru/post/1530483/


All Articles