【问题标题】:insert current date in oracle database using jdbc使用 jdbc 在 oracle 数据库中插入当前日期
【发布时间】:2016-08-27 19:39:15
【问题描述】:

我正在尝试将当前日期插入 Oracle sql。我已在 oracle sql 中将数据类型设置为 DATE,并将日期格式更改为 DD-MM-YYYY。现在我正在尝试按如下方式插入当前日期。但我我收到一些错误,如下所示。不知道出了什么问题

String sql6 = "insert into account(acc_no,acc_type,primary_phone_number,people_in_plan,acc_activated_date,acc_deactivated_date) values('"+n1+"','"+acctype+"','"+primaryphoneno+"','"+number_of_people+"',?,?)";      
Stmt = connection.prepareStatement(sql6);
SimpleDateFormat sdf=new SimpleDateFormat("DD-MM-YYYY");
Date date1 = new Date(System.currentTimeMillis());
Stmt.setString(5, sdf.format(date1));
Stmt.setNull(6, java.sql.Types.DATE);
Stmt.executeUpdate();

java.sql.SQLException:列索引无效 在 oracle.jdbc.driver.OraclePreparedStatement.setStringInternal(OraclePreparedStatement.java:5386) 在 oracle.jdbc.driver.OraclePreparedStatement.setString(OraclePreparedStatement.java:5374) 在 oracle.jdbc.driver.OraclePreparedStatementWrapper.setString(OraclePreparedStatementWrapper.java:282)

【问题讨论】:

  • 除非您需要其余处理的日期,否则为什么不插入 sysdate?

标签: java oracle jdbc


【解决方案1】:

您的列索引似乎不正确。它们应该分别是 1 和 2。

Stmt.setString(1, sdf.format(date1));
Stmt.setNull(2, java.sql.Types.DATE);

【讨论】:

  • 我更改了它仍然收到错误为 ORA-01861:文字与格式字符串不匹配。所以,我在 Oracle sql 中格式化了 DATE。因此,我通常按如下方式插入值: INSERT into t (start_date) values (TO_DATE('19990725', 'YYYYMMDD'));在这里,我应该在代码中进行哪些更改以获取当前日期并将其插入表中?
  • 年份使用小写 yyyy,而不是大写 YYYY。使用小写的 dd,而不是大写的 DD。
  • SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy");
【解决方案2】:

请改用statement.setObject(1, new java.sql.Date());@

【讨论】:

  • @Pamparanpa:但是我已经在 oracle sql 中格式化了日期。通常,当我在 oracle 中插入日期时,我会执行以下操作: INSERT into t (start_date) values (TO_DATE('19990725', 'YYYYMMDD'));所以现在它显示错误。我应该在代码中更改什么以获取当前日期并将其以该格式插入到表中?
猜你喜欢
  • 2015-07-31
  • 2018-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-20
  • 2013-03-06
  • 2012-10-18
相关资源
最近更新 更多