Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用sysdate作为参数插入数据库_Java_Oracle_Prepared Statement - Fatal编程技术网

Java 使用sysdate作为参数插入数据库

Java 使用sysdate作为参数插入数据库,java,oracle,prepared-statement,Java,Oracle,Prepared Statement,我有一个prepareStatement,它在测试表中插入一个日期值。 日期值可以是参数中的值,也可以是NULL。 现在,如果日期值为null,我想在数据库中插入sysdate。 我不想使用new java.util.Date().getTime(),因为我电脑中的时间可能与数据库中的时间不一样 PreparedStatement pstmt = null; boolean rs = false; String sql = "INSERT INTO test (ID, r

我有一个prepareStatement,它在测试表中插入一个日期值。 日期值可以是参数中的值,也可以是NULL。 现在,如果日期值为null,我想在数据库中插入sysdate。 我不想使用
new java.util.Date().getTime()
,因为我电脑中的时间可能与数据库中的时间不一样

    PreparedStatement pstmt = null;
    boolean rs = false;
    String sql = "INSERT INTO test (ID, record_date values(?, ?)";

        pstmt = DBConnection.getConnection().prepareStatement(sql);
        pstmt.setString(1, para1);
        if (para2 != null)
           pstmt.setDate(2, para2);
        else
          pstmt.setDate(2, sysdate); // is that possible?

        rs = (pstmt.executeUpdate() > 0);

不,这是不可能的。如果要使用数据库中的日期,则必须使用:

String sql = "INSERT INTO test (ID, record_date values(?, systdate())";
boolean rs = false;
String sql = "INSERT INTO test (ID, record_date) values(?, NVL(?, sysdate()))";
PreparedStatement pstmt = DBConnection.getConnection().prepareStatement(sql);
pstmt.setString(1, para1);
if (para2 == null)
    pstmt.setNull(2, Types.Date);
else
    pstmt.setDate(2, para2);
rs = (pstmt.executeUpdate() > 0);