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.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的返回值。

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

此外,如果任何参数为空,那么您必须显式调用 java.sql.PreparedStatement.setNull(...)

关于java - 为什么更新查询不更新Mysql数据库中的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30746424/

相关文章:

java - 如何构造可以在不同键上索引和排序的数据?

java - 在带有身份验证 header 的发布请求中添加正文 android

java - 静态属性访问PHP中的静态属性

php - 如何将普通的 sql 查询转换为 Zend_Db_Select?

MySQL - 返回当前日期介于开始日期和结束日期之间的行

java - Java HTTP 推送(消息传递)的最佳解决方案

java - 如何将动态表从 Plant Simulation 传输到 Java?

php - HTML & 字符代码未加载到表单文本框中 -PHP

php - 为什么我的查询不起作用?

php - 当 Wilson 分数间隔相等时,MYSQL 使用 UploadDate 对下一行进行排序