Java 为什么更新查询不更新Mysql数据库中的日期
我在更新数据库中的数据时发现了一个问题。日志显示更新成功,但数据库中的数据未更改。这种情况有时会发生,但并不经常发生,如200例中的1例 代码如下:Java 为什么更新查询不更新Mysql数据库中的日期,java,mysql,Java,Mysql,我在更新数据库中的数据时发现了一个问题。日志显示更新成功,但数据库中的数据未更改。这种情况有时会发生,但并不经常发生,如200例中的1例 代码如下: public void updateRecharge(String serial_num, String msg, String succ_amout, String datetime) { try { con = open(); } catch(Exception e) { e.printStack
public void updateRecharge(String serial_num, String msg, String succ_amout, String datetime) {
try {
con = open();
} catch(Exception e) {
e.printStackTrace();
log.writeLog(serial_num, datetime, "fail to update: " + e.getMessage());
return;
}
String area = new JudgeTidField().checkTidField(serial_num)[1];
String table = new JudgeTidField().table(area);
String query = "update " + table + " set Recharge_state=?, Recharge_money=?, Recharge_record_date=? where Serial_number='" + serial_num + "';";
try {
preState = con.prepareStatement(query);
preState.setString(1, msg);
preState.setFloat(2, Float.valueOf(succ_amout));
preState.setString(3, datetime);
preState.executeUpdate();
log.writeLog(serial_num, datetime, "success to update");
} catch(Exception e) {
e.getMessage();
log.writeLog(serial_num, datetime, "fail to update: " + e.getMessage());
} finally {
try {
preState.close();
} catch (SQLException e1) {
e1.printStackTrace();
}
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
我查看日志,它显示“更新成功”,但数据没有更改。什么样的问题导致了这种情况?正如@MadProgrammer所建议的,您应该使用serialNum的参数替换,并检查executeUpdate的返回值 此外,我将使用将
datetime
转换为java.util.Date并调用将其应用于preState
。这将尽早捕获任何日期格式问题
此外,如果任何参数为空,则必须显式调用充值记录日期列的SQL类型是什么?1-您应该像其他参数一样,为序列号使用;2-
preState.executeUpdate()
返回一个int
值,该值表示更新的行数,您可能需要检查it@SteveC类型是datetime