请帮助..我已经搜索过了。但我仍然不知道我的错在哪里。也许我只是想念一些东西。
这是错误:
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;
}
答案 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();