JDBC中往一张表的String类型的字段中插入SQL语句的问题

lejqq 2012-12-26 05:39:46
JDBC中往一张表的String类型的字段中插入SQL语句的问题:
如下面的语句:
sql=insert into RT_RQ_DATARULE (TESTNO,STEPNO,TYPE,FIELD3,SQLDBTYPE) values
('lejcs_004',9,'EXESQL',q'Xinsert into IB_CBA_EboxUnitDET values(7554013229291,1,-1,50000,to_date('2010-06-11 00:00:00','yyyy-mm-dd hh24:mi:ss'),to_date('2099-07-12 00:00:00','yyyy-mm-dd hh24:mi:ss'),-1,0,2000,-1,to_date('2010-07-11 22:48:24','yyyy-mm-dd hh24:mi:ss'));X',1)
就是把一个insert语句插入到FIELD3字段中,直接在ORACLE命令行是可以执行成功,但用jdbc会如下错误:
java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 1

用的是
PreparedStatement ps = null
ps = updateCon.prepareStatement(sql);
ps.executeUpdate()
这里的updateCon是Connection的连接

如果把FIELD3对应的insert语句中的to_date里的":"去掉用JDBC是执行成功的

环境:Tomcat6.0,ojdbc14.jar

求解决方法
...全文
314 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lejqq 2013-01-04
  • 打赏
  • 举报
回复
可以把要插入FIELD3的SQL语句写在外面的。 String FIELD3SQL = ""; values里面用?代替 下面ps.setString(4,FIELD3SQL) 用这个方法可以解决这个问题,谢谢
forgetsam 2012-12-27
  • 打赏
  • 举报
回复
1 Java的字符串需要双引号 2 'abc'表示一个值为abc的字符串,想表示一个里面有单引号的字符串需要用''转义,比如想插入values(to_date('19010101','yyyymmdd')) 必须拼接成values(to_date(''19010101'',''yyyymmdd''))
  • 打赏
  • 举报
回复
可以把要插入FIELD3的SQL语句写在外面的。 String FIELD3SQL = ""; values里面用?代替 下面ps.setString(4,FIELD3SQL)
saibeixiaoxiong 2012-12-27
  • 打赏
  • 举报
回复
把你要插入的新值用?表示。
MiceRice 2012-12-26
  • 打赏
  • 举报
回复
把你这句话里面的:当成参数标识了,需要转义。 不过记得不太清楚了,你把单个冒号换成连续两个冒号试试看。 或者干脆不要用PreparedStatement,反正你也没参数。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧