日期:2014-05-20  浏览次数:21086 次

PreparedStatement里如何使引号里的?成为占位符
类似与   select   ...   where   info   like   '%?% '
这里的问号是不被看作是占位符的,所以当set的时候会报错java.sql.SQLException:   Parameter   index   out   of   range

如何不用sql语句的拼接解决这个问题
谢谢

------解决方案--------------------
字符串连接吧
------解决方案--------------------
||
------解决方案--------------------
学习一下
------解决方案--------------------
拼接吧~
------解决方案--------------------
程序员群 41801837
------解决方案--------------------
PreparedStatement pst = conn.prepareStatement( "select ... where info like ? ");

pst.setString(1, "% "+name+ "% ");
------解决方案--------------------
用连接 好了
------解决方案--------------------
PreparedStatement pst = conn.prepareStatement( "select ... where info like ? ");
param= param+ "? ";
pst.setString(1, "% "+param+ "% ");

可以在setString之前构造你的字串,然后传入
------解决方案--------------------
PreparedStatement pst = conn.prepareStatement( "select ... where info like ? ");

pst.setString(1, "% "+name+ "% ");

上面的这个语句少写了单引号,正确地应当是

PreparedStatement pst = conn.prepareStatement( "select ... where info like ? ");

pst.setString(1, " '% "+name+ "% ' ");

------解决方案--------------------
直接在PreparedStatement之前把语句保存到String里不是更方便么