java用prepareStatement模糊查询问题,用的是sql server,我晕了
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java用prepareStatement模糊查询问题,用的是sql server,我晕了相关的知识,希望对你有一定的参考价值。
我用的是sql server 2005(记得),我看过网上介绍的这种方法,都是不行的,大哥们,有其他方法吗?急啊,用prepareStatement模糊查询这么难吗,我要是sql server 的方法
public List queryByLike(String cond) throws Exception
List all = new ArrayList() ;
String sql = "SELECT * FROM note WHERE title LIKE ? or AUTHOR LIKE ? or CONTENT LIKE ?" ;
PreparedStatement pstmt = null ;
DataBaseConnection dbc = null ;
dbc = new DataBaseConnection() ;
try
pstmt = dbc.getConnection().prepareStatement(sql) ;
pstmt.setString(1,"%"+cond+"%") ;//这里已经按照网上大部分去做的,我晕了
pstmt.setString(2,"%"+cond+"%") ;
pstmt.setString(3,"%"+cond+"%") ;
编码方面我已经检查了很多遍,没有问题的。
pstmt.setString(1,"'%"+cond+"%'") ;
pstmt.setString(2,"'%"+cond+"%'") ;
pstmt.setString(3,"'%"+cond+"%'") ;
这个不行噢,搜索还是空白的。
pstmt.setString(1,"%"+cond+"%") ;//这里设置的表的字段 及那个(问号)
或者表里没又那些数据 参考技术A pstmt.setString(1,"'%"+cond+"%'") ;
pstmt.setString(2,"'%"+cond+"%'") ;
pstmt.setString(3,"'%"+cond+"%'") ;
================补充
如果你换成了我上面的代码,而且你确定数据库里有你这样查询的记录,你这样查询还是查询不到,那就可能是乱码 参考技术B 提示什么错误?
另外我觉得cond应该是包含三个值吧。因为where 有三个条件
要么需要传三个参数,要么需要将cond拆分成三个值,比如类似:
"1^2^3^"这样的值,那么就把1、2、3分别传给where 的三个条件
那就是你的参数传错了,你把三个参数都传成了cond值,
肯定差不出任何结果
你上面定义的 List all = new ArrayList() ;
很有可能就是用来拆分cond用的。 参考技术C 简单,
JAVA带预编译的模糊查询问题
sql=con.prepareStatement( "SELECT * FROM users where uname LIKE '%?% ' "); sql.setString(1, "华"); 这样写没有用!高手解决!好像直接查 "%?%" 字符串了!
参考技术A PreparedStatement sta = Getconn.GetConnection().prepareStatement("select admin_name,name from admin_hy where name like ?");
sta.setString(1, "%张%"); 参考技术B 你把sql改成LIKE ?setString的时候手动拼成“%华%”呢 参考技术C sql=con.prepareStatement( "SELECT * FROM users where uname LIKE '? ' "); sql.setString(1, "%华%"); 参考技术D 去掉 '%?% ' 的单引号看看
以上是关于java用prepareStatement模糊查询问题,用的是sql server,我晕了的主要内容,如果未能解决你的问题,请参考以下文章