带有准备语句的SQL Update Maria DB

时间:2016-06-29 13:36:16

标签: java mysql sql-update prepared-statement

请帮助..我已经搜索过了。但我仍然不知道我的错在哪里。也许我只是想念一些东西。

这是错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '?, ID_JABATAN=?, TANGGAL_MASUK=?, TANGGAL_KELUAR=?, ID_JENIS_KARYAWAN=? WHERE ID' at line 1

这是我的代码:

    try {
        DBConnection knk = new DBConnection();
        Connection conn = knk.bukaKoneksi();
        String sql = "UPDATE KARYAWAN SET NAMA_KARYAWAN=?, ID_JABATAN=?, TANGGAL_MASUK=?, TANGGAL_KELUAR=?, ID_JENIS_KARYAWAN=? WHERE ID_KARYAWAN=?";
        PreparedStatement ps = conn.prepareStatement(sql);
        ps.setString(1, karyawan.getNamaKaryawan());
        ps.setInt(2, karyawan.getIdJabatan());
        ps.setDate(3, karyawan.getTanggalMasuk());
        ps.setDate(4, karyawan.getTanggalKeluar());
        ps.setInt(5, karyawan.getIdJenisKaryawan());
        ps.setInt(6, karyawan.getIdKaryawan());

        int hasil = ps.executeUpdate(sql);
        return hasil > 0;
    } catch (SQLException e) {
        e.printStackTrace();
        return false;
    }

表格栏: table column

2 个答案:

答案 0 :(得分:3)

int hasil = ps.executeUpdate(sql);

中删除参数

如果使用Parameter调用它,则查询将是executet,而不是准备好的Statement。

请参阅javadoc

  

int executeUpdate(String sql)                    抛出SQLException

     

执行给定的SQL语句,可以是INSERT,UPDATE或   DELETE语句或不返回任何内容的SQL语句,例如   SQL DDL语句。注意:此方法无法在a上调用   PreparedStatement或CallableStatement。参数:sql - 一个SQL数据   操纵语言(DML)语句,例如INSERT,UPDATE或   删除;或者不返回任何内容的SQL语句,例如DDL   statement.Returns:(1)SQL数据操作的行数   语言(DML)语句或(2)0表示返回的SQL语句   nothingThrows:SQLException - 如果发生数据库访问错误,则此操作   方法在一个封闭的Statement上调用,给定的SQL语句   生成一个ResultSet对象,该方法被调用   PreparedStatement或CallableStatementSQLTimeoutException - 当   驱动程序已确定由指定的超时值   已超出setQueryTimeout方法并至少尝试过   取消当前运行的Statement

  

int executeUpdate()                     抛出SQLException   在此PreparedStatement对象中执行SQL语句   必须是SQL数据操作语言(DML)语句,例如   INSERT,UPDATE或DELETE;或者什么都不返回的SQL语句,   例如DDL声明。返回:(1)SQL数据的行数   操作语言(DML)语句或(2)0用于SQL语句   返回nothingThrows:SQLException - 如果数据库访问错误   发生;在关闭的PreparedStatement或SQL上调用此方法   语句返回ResultSet objectSQLTimeoutException - 当   驱动程序已确定由指定的超时值   已超出setQueryTimeout方法并至少尝试过   取消当前运行的Statement

答案 1 :(得分:3)

试试这个:

int hasil = ps.executeUpdate();