JDBC ?被单引号包裹问题

前两天在写JDBC select查询的时候遇到一个问题,?被单引号包裹了,导致给问号赋值的时候识别不出来,然后报了这么个错:Parameter index out of range (1 > number of parameters, which is 0).

原来的代码:

Connection con = DBUtil.getConnection();
String sql = "select * from entry_list where entry like '%?%'";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, str);//str是传过来的字符串
ResultSet rs = ps.executeQuery();

这种问号是识别不出来的,然后各种找解决办法,终于这么解决了:

Connection con = DBUtil.getConnection();
String sql = "select * from entry_list where entry like ?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, "%"+str+"%");
ResultSet rs = ps.executeQuery();

like的后面整个用?代替,然后给?赋值的时候拼接%,当然也可以不用数据库筛选,直接查询全部,然后在servlet或其他的方法中用正则筛选处理。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值