执行这一句代码,当a,b,c,d,f为一个数字可以插进去,但是当它们是一个字符串时就插不进,出现下面的错误,这是怎么了??

yangjia1571525937 2016-05-23 08:43:52

try {
res=stmt.executeUpdate("insert into ques(num,question,option1,option2,option3,option4) values ("+x+","+a+","+b+","+c+","+d+","+f+")");
} catch (SQLException e1) {
e1.printStackTrace();
}




错误:
java.sql.SQLSyntaxErrorException: ORA-00917: 缺失逗号

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:395)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:802)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:436)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:521)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:194)
at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:1000)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1307)
at oracle.jdbc.driver.OracleStatement.executeUpdateInternal(OracleStatement.java:1814)
at oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:1779)
at oracle.jdbc.driver.OracleStatementWrapper.executeUpdate(OracleStatementWrapper.java:277)
at ouyan.zenjia.actionPerformed(zenjia.java:136)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$400(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
a
...全文
130 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangjia1571525937 2016-05-24
  • 打赏
  • 举报
回复
引用 3 楼 ghx287524027的回复:
[quote=引用 2 楼 yangjia1571525937 的回复:] [quote=引用 1 楼 ghx287524027的回复:]正确的插入语句是: insert into table (col1,col2……) values (value1,value2……); 你看一下你解析出来的语句是这样的嘛,另外value和col的类型要一致。
是的啊 类型什么的 都是一样的 我在同样的数据我在数据库里面可以插 可是在这里就出现了上面的错误[/quote] 你把这句话在java里面输出,看看是不是想要的结果[/quote] 谢谢,问题已经得到解决
yangjia1571525937 2016-05-24
  • 打赏
  • 举报
回复
引用 4 楼 ghx287524027的回复:
把res=stmt.executeUpdate("insert into ques(num,question,option1,option2,option3,option4) values ("+x+","+a+","+b+","+c+","+d+","+f+")");这句分成两句,executeUpdate()的参数是string类型,但是在这里拼接完之后,类型应该不对。所以将拼接操作放在外面进行吧 String sql="insert into ques(num,question,option1,option2,option3,option4) values (" + x + "," + a + "," + b + "," + c + "," + d + "," + f + ")"; res=stmt.executeUpdate(sql);
谢谢 问题已经得到解决
卖水果的net 2016-05-24
  • 打赏
  • 举报
回复
这种问题,最好就是把拼接出来的语句, 打印出来,在数据库端,手动执行一下,很容易看到问题的原因;
ghx287524027 2016-05-23
  • 打赏
  • 举报
回复
把res=stmt.executeUpdate("insert into ques(num,question,option1,option2,option3,option4) values ("+x+","+a+","+b+","+c+","+d+","+f+")");这句分成两句,executeUpdate()的参数是string类型,但是在这里拼接完之后,类型应该不对。所以将拼接操作放在外面进行吧 String sql="insert into ques(num,question,option1,option2,option3,option4) values (" + x + "," + a + "," + b + "," + c + "," + d + "," + f + ")"; res=stmt.executeUpdate(sql);
ghx287524027 2016-05-23
  • 打赏
  • 举报
回复
引用 2 楼 yangjia1571525937 的回复:
[quote=引用 1 楼 ghx287524027的回复:]正确的插入语句是: insert into table (col1,col2……) values (value1,value2……); 你看一下你解析出来的语句是这样的嘛,另外value和col的类型要一致。
是的啊 类型什么的 都是一样的 我在同样的数据我在数据库里面可以插 可是在这里就出现了上面的错误[/quote] 你把这句话在java里面输出,看看是不是想要的结果
yangjia1571525937 2016-05-23
  • 打赏
  • 举报
回复
引用 1 楼 ghx287524027的回复:
正确的插入语句是: insert into table (col1,col2……) values (value1,value2……); 你看一下你解析出来的语句是这样的嘛,另外value和col的类型要一致。
是的啊 类型什么的 都是一样的 我在同样的数据我在数据库里面可以插 可是在这里就出现了上面的错误
ghx287524027 2016-05-23
  • 打赏
  • 举报
回复
正确的插入语句是: insert into table (col1,col2……) values (value1,value2……); 你看一下你解析出来的语句是这样的嘛,另外value和col的类型要一致。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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