java.sql.SQLException:ORA-01861:literal与格式字符串不匹配

时间:2013-04-24 12:00:58

标签: java jdbc

我在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.

我没有得到我错的地方。

谢谢。

2 个答案:

答案 0 :(得分:2)

首先,你真的不应该通过连接字符串来创建SQL语句。这使您对SQL注入攻击持开放态度。您应该使用PreparedStatement并设置值,这样JDBC就可以正确地转义它们。

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

答案 1 :(得分:0)

也许在您的字段中,例如pgvw包含'或\,或者您的日期和开始时间可能在使用前没有格式化。