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的关系,肯定每次查询都是全部记录。所以,我觉得应该不是数据库的问题,应该是我的程序有逻辑设计问题,我再考虑,感谢您热心回答^_^。 展开
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的关系,肯定每次查询都是全部记录。所以,我觉得应该不是数据库的问题,应该是我的程序有逻辑设计问题,我再考虑,感谢您热心回答^_^。 展开
3个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询