【问题标题】:java.sql.SQLException: ORA-01861: literal does not match format stringjava.sql.SQLException: ORA-01861: 文字与格式字符串不匹配
【发布时间】:2013-04-24 12:00:57
【问题描述】:

我在 java 中遇到此 sql 查询的以下异常。

 statement2.executeUpdate("INSERT INTO visit_header " 
+ "VALUES ('"+visitnumber+"','"+date+"','"+cookie+"','"+ip+"','"+duration+"','"+pageref
+"','"+startpagename+"','"+endpagename+"','"+pgvw+"','"+starttime+"','"+endtime+"','"
+country+"','"+state+"','"+city+"','"+browser+"','"+os+"','"+device+"')");

例外是:

java.sql.SQLException: ORA-01861: literal does not match format string.

我没有找到错误的地方。

谢谢。

【问题讨论】:

标签: java jdbc


【解决方案1】:

首先,您真的不应该通过连接字符串来编写 SQL 语句。这使您对 SQL 注入黑客持开放态度。您应该使用 PreparedStatement 并设置值,这样 JDBC 才能正确转义它们。

该错误很可能是由于开始时间和结束时间的格式错误。您可能需要显示堆栈跟踪以及您尝试插入的一些示例数据。我建议尝试在这行代码之后立即中断,复制生成的串联字符串,然后直接在数据库中运行它。

【讨论】:

    【解决方案2】:

    可能在您的字段(如 pgvw)中包含 ' 或 \,或者您的日期和开始时间在使用前未格式化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-24
      • 2015-01-11
      • 2010-11-26
      • 2012-10-09
      • 2014-04-27
      相关资源
      最近更新 更多