java使用更新查询在mysql中插入空日期

标签 java mysql jdbc windowbuilder

我正在开发 Java 应用程序(GUI、JDBC、MySQL),但遇到无法解决的问题。

当我向 MySQL DB 中插入数据时(有 String、INT、Date 等数据类型),如果某些字段为空,则没有问题。空字段将 Null 放入数据库中。但是,当我想更新某行时,必须填写所有日期字段,否则会出现错误:

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect date value: 'null' for column 'rociste_datum' at row 1

rociste_datum 是数据库中的第一个日期列

部分代码:

插入方法代码

    public void insertPredmetDB(String prezime, String ime, int nasBroj, Date datumRocista) {
        if (datumRocista == null || datumRocista.equals("")) {
            datumRocistaDB = null;
        } else {
            String datumRocistaSt = new SimpleDateFormat("yyyy-MM-dd").format(datumRocista);
            datumRocistaDB = java.sql.Date.valueOf(datumRocistaSt);
        }

更新方法代码

public void updatePredmetDB(int idNovo, String novoPrezime, String novoIme, int noviNasBroj, Date noviRocisteDatum) {
    if (noviRocisteDatum == null || noviRocisteDatum.equals("")) {
        noviRocisteDatumDB = null;
    } else {
        String datumRocistaSt = new SimpleDateFormat("yyyy-MM-dd").format(noviRocisteDatum);
        noviRocisteDatumDB = java.sql.Date.valueOf(datumRocistaSt);
    }
    String izmena = "UPDATE predmeti SET prezime='" + novoPrezime + "', ime='" + novoIme + "', nas_broj='" + noviNasBroj + "', rociste_datum='" + noviRocisteDatumDB + "'where id='" + idNovo + "'";

    try {

        PreparedStatement ps = con.prepareStatement(izmena);

        ps.execute();

    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

对于所有这些日期,都有 if else 语句,并且这个对象通过具有单例模式的 Controller 传递。我认为没有必要将该代码放在这里,因为没有错误,并且一切正常,除了这个日期。

我认为日期转换有问题。你能帮我什么忙吗?

最佳答案

当你像这样进行字符串连接时

rociste_datum='" + noviRocisteDatumDB + "'

然后你会得到

rociste_datum='null'

代替

rociste_datum=null

这次没有引号。 db 需要一个日期或 null 而不是字符串 'null'

因此在创建准备好的语句之前使用占位符,然后设置参数。

"UPDATE predmeti SET prezime=?, ime=?, nas_broj=?, rociste_datum=? where id=?";

关于java使用更新查询在mysql中插入空日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50761248/

相关文章:

mysql - 如何将数据从csv加载到Spark中的mysql数据库?

java - 如何停止或销毁 Android 线程

java - 如何在不调整 fragment 内容大小的情况下制作过渡动画?

mysql - 我应该为我的大学使用社交网络应用程序的共享服务器吗?

mysql - jdbc mysql(wamp 服务器)连接问题

java - com.mysql.jdbc.PacketTooBigException 刚连接数据库时

java - 无法使用 codenvy SDK 运行 java 控制台应用程序

java - 有没有办法通过jmockit从嵌套类调用方法?

mysql - 将用户名和密码存储在数据库中是否安全?

php - 未更新 VirtueMart 2 数据库中产品中的新字段