使用PreparedStatement对象,往sql语句中的”?“设值,出现异常

selaginella 2013-07-05 04:30:09
想执行一个模糊查询, sql语句是:"SELECT * FROM teacher WHERE t_name LIKE %?%";
其中想通过文本框获取值,用setString()方法将值传入sql语句的?中,但是执行,总是有异常
,说sql语法有问题。
该怎么解决。。。
...全文
287 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
selaginella 2013-07-05
  • 打赏
  • 举报
回复
引用 5 楼 shy315 的回复:
SELECT * FROM teacher WHERE t_name LIKE %?% 替换成 SELECT * FROM teacher WHERE t_name LIKE %'abc'% 有可能不报错吗
恩恩 知道啦
且活且珍惜 2013-07-05
  • 打赏
  • 举报
回复
5L正解.
shy315 2013-07-05
  • 打赏
  • 举报
回复
SELECT * FROM teacher WHERE t_name LIKE %?% 替换成 SELECT * FROM teacher WHERE t_name LIKE %'abc'% 有可能不报错吗
selaginella 2013-07-05
  • 打赏
  • 举报
回复
引用 2 楼 real_tecent 的回复:
试试 String sql = "SELECT * FROM teacher WHERE t_name LIKE ?"; PreparedStatement pst = cnn.prepareStatement(sql); pst.setString(1, "%"+name+"%");//name是你的传值 不然把你的报什么错,贴出来看下。
像你这样问题解决了,但是为什么把%写在sql语句中执行就会有错误呢?
chenlu123456789 2013-07-05
  • 打赏
  • 举报
回复
可以不用setString()方法: sql="select * from teacher where t_name like '%"+setString()方法中要设置的值+"%'";
attach_finance 2013-07-05
  • 打赏
  • 举报
回复
试试 String sql = "SELECT * FROM teacher WHERE t_name LIKE ?"; PreparedStatement pst = cnn.prepareStatement(sql); pst.setString(1, "%"+name+"%");//name是你的传值 不然把你的报什么错,贴出来看下。
shy315 2013-07-05
  • 打赏
  • 举报
回复
?用'xxx'替换后去数据库执行一下。 oracle改成 SELECT * FROM teacher WHERE t_name LIKE '%'||?||'%'

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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