【问题标题】:inserting datetimes into database using java使用java将日期时间插入数据库
【发布时间】:2011-02-28 03:13:26
【问题描述】:

我想使用 Java 和准备好的语句将日期时间插入 MySql 数据库:

Calendar cal = Calendar.getInstance();
PreparedStatement stmnt = db.PreparedStatement("INSERT INTO Run " +
                       "(Time) VALUE (?) ");
    stmnt.setDate(1, new java.sql.Date(cal.getTime()));
    stmnt.executeQuery();  

注意:当前有一个错误 - 在此处找不到符号 (java.sql.Date) 第 4 行

db 是一种包装类的实例,它公开了我从 java.sql 中需要的东西——它只是从我的连接对象这里得到一个准备好的语句。

时间(列)是我数据库中的日期时间,我只能看到 setDate 和 setTime 方法,但我想同时存储这两个方法——我的代码也不管用 ;-)

如果有人可以给我一些关于使用准备好的语句将组合日期时间(当前时间将是一个很大的帮助,因为这是我的第一个目标)插入 MySql DB 的指示,我将非常感激。

谢谢

【问题讨论】:

    标签: java mysql datetime prepared-statement


    【解决方案1】:

    java.sql.Date 的构造函数需要很长时间(自 1970 年以来的毫秒数)java.sql.Date 要从 java.uitl.Calendar 获取毫秒数,请使用 cal.getTimeInMillis()

    您的代码将是:

    Calendar cal = Calendar.getInstance();
    PreparedStatement stmnt = db.PreparedStatement("INSERT INTO Run " + "(Time) VALUE (?) ");
    stmnt.setDate(1, new java.sql.Date(cal.getTimeInMillis()));
    stmnt.executeQuery();
    

    【讨论】:

    • 太棒了!这就是问题所在,stange 错误似乎如此无关。非常感谢您的帮助。
    【解决方案2】:

    以下代码应允许您以毫秒精度插入日期。我已经将它与 HSQLDB、Sybase、SQL-Server 和 MySql 一起使用,没有任何问题。

    java.util.Date date = getMyDate();
    if (date == null) {
        statement.setNull(insertionIndex, Types.TIMESTAMP);
    } else {
        statement.setTimestamp(insertionIndex, new Timestamp (date.getTime()));
    }
    

    【讨论】:

      猜你喜欢
      • 2019-10-06
      • 1970-01-01
      • 1970-01-01
      • 2012-05-01
      • 2013-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多