ranLoD 2009-07-10 14:54
浏览 288
已采纳

JDBC PreparedStatement 问题

PreparedStatement stat=con.prepareStatement("select * from t_factory where fac_address like '%?%'");

这个总是报错,
Exception in thread "main" java.sql.SQLException: No parameters defined during prepareCall()
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.ServerPreparedStatement.getBinding(ServerPreparedStatement.java:751)
at com.mysql.jdbc.ServerPreparedStatement.setString(ServerPreparedStatement.java:1857)
at demo.TestJDBC.main(TestJDBC.java:14)

怎么解决

不要说字符串拼接哦

[b]问题补充:[/b]
[quote]
你没给PreparedStatement 设置参数啊
这个sql不是有个“?”吗,
[/quote]

是有?的,好像是因为在 '%?%'这么用才引起的问题,

  • 写回答

5条回答 默认 最新

  • pjuneye 2009-07-10 15:55
    关注

    引用这里的处理,http://gufenglian.iteye.com/blog/353654
    [quote]
    问题肯定就出在这个问号上,但是想象设置参数不就是用问号吗

    仔细观察,发现这里把问号当成了条件,而不是参数的设置

    这样

    stmt = con.prepareStatement(select serviceCode from smsconfiginfo where configName like '%'?'%')

    就可以了。
    [/quote]
    ps:提问前先用Google吧.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料