jsp实现多个条件查询功能

时间:2022-01-26 22:29:22
<%!
//name字段名称,value字段的值
public List search(String[] propertyName, Object[] value) throws Exception{
List list=new ArrayList();
Connection conn = getConnection();
PreparedStatement ps=null;
        StringBuffer sqlBuffer = new StringBuffer();
        sqlBuffer.append("select ydh,hdh,hytype,wpzl,wptj,ysfs,sfzdname,sfzdcode,mdzdname,mdzdcode,psyname,qskfname,qsdate from entry\n");
        int len=propertyName.length;
       //构建出多条件查询sql
       for(int i=0;i<len;i++){
       if(i==0){
       sqlBuffer.append("where"+ propertyName[i] + "=" +value[i]+"\n");
       }else{
       sqlBuffer.append("and" + propertyName[i] + "="+value[i]+"\n");
       }
       } 
       ps = conn.prepareStatement(sqlBuffer.toString());
        ResultSet rs = ps.executeQuery();
        
        while(rs.next()){
         String ydh = rs.getString(1);
String hdh = rs.getString(2);
String hytype = rs.getString(3); 
String wpzl = rs.getString(4); 
String wptj = rs.getString(5);
String ysfs = rs.getString(6);
String sfzdname = rs.getString(7);
int sfzdcode = rs.getInt(8);
String mdzdname = rs.getString(9);
int mdzdcode =rs.getInt(10);
String psyname = rs.getString(11);
String qskfname = rs.getString(12);
String qsdate = rs.getString(13);
list.add(ydh);
list.add(hdh);
list.add(hytype);
list.add(wpzl);
list.add(wptj);
list.add(ysfs);
list.add(sfzdname);
list.add(sfzdcode);
list.add(mdzdname);
list.add(mdzdcode);
list.add(psyname);
list.add(qskfname);
list.add(qsdate);
   }
 return list;
}
 %>
<%
String ydh = request.getParameter("ydh");
String hdh = request.getParameter("hdh");
String sfzdcode = request.getParameter("sfzdcode");
String mdzdcode = request.getParameter("mdzdcode");
String qskfname = request.getParameter("qskfname");
String qsdate = request.getParameter("qsdate");
String[] str = new String[]{};

如何把前台的6个值传到数组中,而且如果是空值 就不传,主要实现的是多条件查询?
测试条件不太会写 ?麻烦大侠们 帮帮忙 
%>

14 个解决方案

#1




stringbuffer sb = new stringbuffer();

sb.append("  select * from  表 where 1= 1 ");
for(int i =0 ; i <len i++){
 if(propertyName != null && value != null ){
  sb.append("  and" + propertyName[i] + "="+value[i]  " );
 }

}


是否是这样的意思?

#2


String sql = " select * from table where 1 = 1 ";
if (ydh != null && !"".equals(ydh)) {
    sql += " and colname = '" + ydh + "' " ;
}

其他类似。。。

#3


[img=http://http://localhost:8080/back_entry/select.jsp][/img]

#4


你们可能理解错了我的意思了!
我的意思是怎么去写一个测试类,
 但是测试的值要从前台页面中取,
我在取值的时候不知道如何把前台取到的值;为空的不放到数组中,不为空的值放到数组中

#5


json

#6


另一种方案是用字符串传递给action,然后split(空格 逗号 等)下,放到数组中。

#7


根据几个条件查询 可能有的条件为空 有的不为空  可能全是空 也可能都不为空。所以,先查询所有string sql=select * from ?where 1=1;然后判断后面的条件是否为空 如果不为空则sql+= 条件

#8


可以在action中给出是否为空的判断写sql

#9


可以放在一个map里、如果有值就放到map里
key 为你的 数据库表字段  value 为前台传递过来的值、

然后你在sql拼装的时候迭代map的key 和value就可以了、

#10


通过ajax,把需要传递的参数传递过去啊,然后后台解析出结果,在通过JSON返回来,前台解析 ,然后显示

#11


问题解决了

#12


jsp实现多个条件查询功能

#13


几个点子都不错,楼主问题解决了,能否说说,怎样解决的

#14


改了方法,根据7楼那种差不多,拼接sql语句

#1




stringbuffer sb = new stringbuffer();

sb.append("  select * from  表 where 1= 1 ");
for(int i =0 ; i <len i++){
 if(propertyName != null && value != null ){
  sb.append("  and" + propertyName[i] + "="+value[i]  " );
 }

}


是否是这样的意思?

#2


String sql = " select * from table where 1 = 1 ";
if (ydh != null && !"".equals(ydh)) {
    sql += " and colname = '" + ydh + "' " ;
}

其他类似。。。

#3


[img=http://http://localhost:8080/back_entry/select.jsp][/img]

#4


你们可能理解错了我的意思了!
我的意思是怎么去写一个测试类,
 但是测试的值要从前台页面中取,
我在取值的时候不知道如何把前台取到的值;为空的不放到数组中,不为空的值放到数组中

#5


json

#6


另一种方案是用字符串传递给action,然后split(空格 逗号 等)下,放到数组中。

#7


根据几个条件查询 可能有的条件为空 有的不为空  可能全是空 也可能都不为空。所以,先查询所有string sql=select * from ?where 1=1;然后判断后面的条件是否为空 如果不为空则sql+= 条件

#8


可以在action中给出是否为空的判断写sql

#9


可以放在一个map里、如果有值就放到map里
key 为你的 数据库表字段  value 为前台传递过来的值、

然后你在sql拼装的时候迭代map的key 和value就可以了、

#10


通过ajax,把需要传递的参数传递过去啊,然后后台解析出结果,在通过JSON返回来,前台解析 ,然后显示

#11


问题解决了

#12


jsp实现多个条件查询功能

#13


几个点子都不错,楼主问题解决了,能否说说,怎样解决的

#14


改了方法,根据7楼那种差不多,拼接sql语句