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

我需要带三个参数,在JSP的表单中传入Bean中执行,在Bean中封装了一个函数,里面这样可不可以啊:publicstaticArrayList<BookDAO>find... 我需要带三个参数,在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的关系,肯定每次查询都是全部记录。所以,我觉得应该不是数据库的问题,应该是我的程序有逻辑设计问题,我再考虑,感谢您热心回答^_^。
展开
 我来答
小圣12345
推荐于2017-09-09 · TA获得超过820个赞
知道小有建树答主
回答量:198
采纳率:0%
帮助的人:158万
展开全部

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 '%王五%'

结果如下

数据库如下:

 

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

xuezhenwen001
2013-06-26 · 知道合伙人养生行家
xuezhenwen001
知道合伙人养生行家
采纳数:31 获赞数:234
县优秀药师

向TA提问 私信TA
展开全部
把or改成and,可以定义个条件字段、条件不为空加在后面
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tangsuqq
2013-06-26 · TA获得超过369个赞
知道答主
回答量:297
采纳率:0%
帮助的人:65.6万
展开全部
and....为什么全部是or?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式