Java中怎么实现带参数的多条件的模糊查询?

我需要带三个参数,在JSP的表单中传入Bean中执行,在Bean中封装了一个函数,里面这样可不可以啊:
public static ArrayList<BookDAO> findBook(String isbn,String bookname,String author )
{
// System.out.println("查询图书方法");
ArrayList<BookDAO> list = new ArrayList<BookDAO>();

String sql ="select * from tbl_book where isbn like '%"+isbn+"%' or bookname = '%"+bookname+
"%' or author = '%"+author+"%'";

//System.out.println(sql);
JDBCBean jdbc = new JDBCBean();
ResultSet rs = jdbc.executeQuery(sql);
try {
while(rs.next()){
BookDAO bk = new BookDAO();
bk.setId(rs.getInt("id"));
bk.setIsbn(rs.getString("isbn"));
bk.setBookname(rs.getString("bookname"));
bk.setAuthor(rs.getString("author"));
bk.setPress(rs.getString("press"));
bk.setDate(rs.getString("pubdate"));
bk.setPrice(rs.getString("price"));
list.add(bk);

}

rs.close();
} catch (Exception e) {

}

jdbc.close();
return list;

}
可是,我在表单中输入无论输不输人网页的前台都全部显示的。然后我又在控制台打印出sql 语句,把语句粘贴到MySQL控制台执行,还是全部显示,请大神指教,这个SQL语句应该怎么写啊?

JSP页面是这样的:
Java中SQL语句是
String sql ="select * from tbl_book where isbn like '%"+isbn+"%' or bookname like '%"+bookname+
"%' or author like '%"+author+"%'";但还是全部显示?
——————————————————————————————————————————
我明白了,如果传过来的参数isbn="",bookname="张三",author="",转化成SQL语句就成为:
select * from tbl_bookname where isbn like '%' or bookname like '%张三%' or author like '%';
因为是OR的关系,肯定每次查询都是全部记录。所以,我觉得应该不是数据库的问题,应该是我的程序有逻辑设计问题,我再考虑,感谢您热心回答^_^。

or bookname = '%"+bookname

or author = '%"+author+"%'";  = 号改成like 试试

 

2013年6月26日8:37:02

sql语句测试没问题.

SELECT * FROM tbl_book WHERE isbn LIKE '%1%' OR bookname LIKE '%b%' OR author LIKE '%王五%'

结果如下

数据库如下:

 

我怀疑是你数据库的问题.

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-26
把or改成and,可以定义个条件字段、条件不为空加在后面
第2个回答  2013-06-26
and....为什么全部是or?
相似回答