java用prepareStatement模糊查询问题,用的是sql server,我晕了

来源:百度知道 编辑:UC知道 时间:2024/05/17 21:53:30
我用的是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+"%'") ;

这个不行噢,搜索还是空白的。

String sql = "SELECT * FROM note WHERE title LIKE ? or AUTHOR LIKE ? or CONTENT

pstmt.setString(1,"%"+cond+"%") ;//这里设置的表的字段 及那个(问号)
或者表里没又那些数据

pstmt.setString(1,"'%"+cond+"%'") ;
pstmt.setString(2,"'%"+cond+"%'") ;
pstmt.setString(3,"'%"+cond+"%'") ;
================补充
如果你换成了我上面的代码,而且你确定数据库里有你这样查询的记录,你这样查询还是查询不到,那就可能是乱码

提示什么错误?

另外我觉得cond应该是包含三个值吧。因为where 有三个条件
要么需要传三个参数,要么需要将cond拆分成三个值,比如类似:
"1^2^3^"这样的值,那么就把1、2、3分别传给where 的三个条件

那就是你的参数传错了,你把三个参数都传成了cond值,
肯定差不出任何结果
你上面定义的 List all = new ArrayList() ;
很有可能就是用来拆分cond用的。

简单,