java执行sql报错 ora-00917 missing comma ,可是sql在后台打印出来的我贴在plsql中就可以执行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java执行sql报错 ora-00917 missing comma ,可是sql在后台打印出来的我贴在plsql中就可以执行相关的知识,希望对你有一定的参考价值。

调试bug的时候批量从excel表中取数据insert进数据库, 少数几条报错 missing comma,当把其中excel某个字段的长度缩短之后(这个字段在数据库定义中不超长),却可以执行。

String sql_a = "insert into t_zckp_xxb (zckp_id,gjrq,zckp_mc,yz,yzje,nzje,ljzj,zjnx,kmdm,syrq,jz,jggg,cqzz,bmmc,ddmc,fzr,dqdm,stz,yxbz,drpcls) values(";
sql_a = sql_a + "'"+zckp_id+"','"+gjrq+"','"+zckp_mc+"',"+yz+","+yzje+","+nzje+","+ljzj+","+zjnx+",'"+kmdm+"',";
sql_a = sql_a + "'"+syrq+"',"+jz+",'"+jggg+"','"+cqzz+"','"+bmmc+"','"+ddmc+"','"+fzr+"','"+dqdm+"','"+stz+"','1','"+drpcls+"'";
sql_a = sql_a + ")";

奇怪的是当我把sql最后的“)”与上一行合并时 程序也不报错了。。
String sql_a = "insert into t_zckp_xxb (zckp_id,gjrq,zckp_mc,yz,yzje,nzje,ljzj,zjnx,kmdm,syrq,jz,jggg,cqzz,bmmc,ddmc,fzr,dqdm,stz,yxbz,drpcls) values(";
sql_a = sql_a + "'"+zckp_id+"','"+gjrq+"','"+zckp_mc+"',"+yz+","+yzje+","+nzje+","+ljzj+","+zjnx+",'"+kmdm+"',";
sql_a = sql_a + "'"+syrq+"',"+jz+",'"+jggg+"','"+cqzz+"','"+bmmc+"','"+ddmc+"','"+fzr+"','"+dqdm+"','"+stz+"','1','"+drpcls+"')";

望达人解答!

我还真没看出来哪里有问题。。
我建议你 把每一条sql 都 打印出来对比一下
System.out.println(sql_a ); 打3条 分别看看 每一条 字符串是什么
然后 把你的 第二种情况 也弄进去 打印一下 .. 对比一下.
参考技术A 你这个是不是换行以后有空格,造成的。
一般这样的句子 换行以后有时候会有问题本回答被提问者采纳
参考技术B 你用prepareStatement试试看哦,你这么写看着累。

以上是关于java执行sql报错 ora-00917 missing comma ,可是sql在后台打印出来的我贴在plsql中就可以执行的主要内容,如果未能解决你的问题,请参考以下文章

sql oracle 缺少逗号错误代码 ORA-00917

ORA-00917: 缺少逗号 - 插入查询失败

ORA-00917: missing comma

ORA-00917: oracle 中不存在插入时缺少逗号

mis权限系统

mysql 执行报错:Error querying database. Cause: java.sql.SQLSyntaxErrorException:which is not functionall