唇劫. 2022-05-27 14:53 采纳率: 73.7%
浏览 81
已结题

JSP模糊查询查不到数据不知道那块写错了求解!

jsp页面

请输入药品名称:<input type="text" id="yname">
        类型:<select id="ytype">
                    <option value="">---请选择---</option>
                    <c:forEach var="MedicineType" items="${list2}">
                        <option value="${MedicineType.medicineTypeId}">${MedicineType.typeName}</option>
                    </c:forEach>
            </select>
            <button id="search">搜索</button>



jquery脚本
  $("#search").click(function() {
              let yname=$("#yname").val();
              let ytype=$("#ytype").val();
              location.href="selectByNameAndType?yname="+yname+"&ytype="+ytype;
          })


selectByNameAndType类

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        String yname=request.getParameter("yname");
        String ytype=request.getParameter("ytype");
        MedicineDao medicineDao=new MedicineDao();
        ArrayList<Medicine> list=medicineDao.queryByNameAndType(yname,ytype);
        request.setAttribute("list", list);
        request.getRequestDispatcher("index.jsp").forward(request, response);
    }

这是dao类查询SQL语句的方法
 public ArrayList<Medicine> queryByNameAndType(String yname, String ytype) {
        ArrayList<Medicine> list=new ArrayList<Medicine>();
        Connection con=null;
        PreparedStatement sta=null;
        ResultSet rs=null;
        con=DBUtil.getCon();
        String sql="SELECT * FROM Medicine WHERE 1=1";
        if (yname!=""){
            sql+="AND  NAME='"+yname+"'";
        }
        if (ytype!=""){
            sql+="AND  typeId='"+ytype+"'";
        }
        try{
            sta=con.prepareStatement(sql);
            rs=sta.executeQuery();
            while (rs.next()){
                Medicine medicine=new Medicine(rs.getInt(1),
                        rs.getString(2),rs.getFloat(3),
                        rs.getString(4),rs.getInt(5));
                list.add(medicine);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            DBUtil.close(rs,sta,con);
        }
        return list;
    }
  • 写回答

3条回答 默认 最新

  • xcLeigh 全栈领域优质创作者 2022-05-27 14:58
    关注

    AND前面加空格,要不然sql报错

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月4日
  • 已采纳回答 5月27日
  • 创建了问题 5月27日