为什么更新查询不更新Mysql数据库中的日期

时间:2015-06-10 03:07:32

标签: java mysql

我在更新数据库中的数据时发现了一个问题。日志显示更新成功,但数据库中的数据不会更改。这种情况有时会发生,而不是像200中的一样。

下面是代码:

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();
        }
    }
}

我检查日志,显示“更新成功”,但数据没有变化。什么样的问题会导致这种情况发生?

1 个答案:

答案 0 :(得分:2)

根据@MadProgrammer的建议,您应该使用参数替换serialNum并检查executeUpdate的返回值。

此外,我会使用java.text.DateFormatdatetime转换为java.util.Date,并调用java.sql.PreparedStatement.setDate(...)将其应用于preState。这将尽早捕获任何日期格式问题。

此外,如果任何参数为null,则必须明确调用java.sql.PreparedStatement.setNull(...)