JSP中Sql Server的JDBC数据库条件查询

来源:互联网 发布:php前端 java后端架构 编辑:程序博客网 时间:2024/06/02 04:46

一,实验要求
编写三个JSP页面:inputCondition.jsp、 byNumber.jsp和byName.jsp页面。编写两个Tag文件:NumberCondtion.tag和NameConditon.tag。
1.inputCondition.jsp的具体要求
inputCondition.jsp页面提供两个表单。其中一个表单允许用户输入要查询的学生的学号,即输入message表中number字段的查询条件,然后将查询条件提交给要byNumber.jsp,另一个表单允许用户输入要查询的学生的姓名,即输入message表中name字段的查询条件,然后将查询条件提交给要byName.jsp
2.byNumber.jsp的具体要求
byNumber.jsp页面首先获得inputCondition.jsp页面提交的关于number字段的查询条件,然后使用Tag标记调用Tag文件ByNumber.tag,并将number字段的查询条件传递给ByNumber.tag。
3.byName.jsp的具体要求
byName.jsp页面首先获得inputCondition.jsp页面提交的关于name字段的查询条件,然后使用Tag标记调用Tag文件ByName.tag,并将name字段的查询条件传递给ByName.tag。。
4.NumberCondtion.tag的具体要求
NumberCondtion.tag文件使用attribute指令获得byNumber.jsp页面传递过来的number字段的查询条件,然后和和数据库建立连接、根据得到的查询条件查询表。NumberCondtion.tag文件使用variable指令将查询结果返回给byNumber.jsp页面。
5.NameConditone.tag的具体要求
NameConditon.tag文件使用attribute指令获得byName.jsp页面传递过来的name字段的查询条件,然后和和数据库建立连接、根据得到的查询条件查询表。NameConditon.tag文件使用variable指令将查询结果返回给byName.jsp页面。
代码:
二,实验过程
2,1在数据库中建表
不用代码的方式:
这里写图片描述
代码方式:

create database jspStudentUSE jspStudent CREATE TABLE JStudent(--管理员表number char(30) primary key,--学号--varchar存储长度为实际输入数据字节实际长度name varchar(30),--姓名birthday char(30),email char(20),);select * from JStudentinsert into JStudentvalues('001','蚂蚁','1997-06-08','mayi@sina.com');insert into JStudentvalues('002','二狗','1997-01-01','yuxue@qq.com');insert into JStudentvalues('003','牛牛','1996-09-02','niuniu@163.com');insert into JStudentvalues('004','略略','1996-12-24','lue@139.com');insert into JStudentvalues('005','花花','1996-07-18','flower@qq.com');--select * from JStudent where name like '%花%'--模糊查询

这里写图片描述
2,2在eclipse中新建web项目,编写代码

1,inputCondition.jsp

 <%@ page contentType="text/html;charset=utf-8" %><html><body><form action="byNumber.jsp" method=post>根据学号查询<br>输入学号:<br>   <input type="text" name="number">   <input type="submit" name="numberSubmit" value="提交">  </form> <form action="byName.jsp" method=post><BR> 根据姓名(模糊)查询<br> 姓名含有<input type="text" name="name"> <input type="submit" name="aname" value="提交"></form></body></html>

2,byNumber.jsp

<%@ page contentType="text/html;charset=utf-8" %><%@ taglib tagdir="/WEB-INF/tags" prefix="inquire"%><html><body bgcolor=cyan><%   String number=request.getParameter("number");//从inputCondition.jsp中获取输入的number%><inquire:NumberCondition number="<%=number%>" />根据学号<%=number%>查询到的记录:<br><%=queryResultByNumber%></body></html>

3,NumberCondition.tag

<%@ tag pageEncoding="utf-8" %><%@ tag import="java.sql.*" %>          <!-- 1,导入java.sql包 --><%@ attribute name="number" required="true" %><%@ variable name-given="queryResultByNumber" scope="AT_END" %><!-- 给byNumber.jsp返回一个结果集 --><%    StringBuffer result=new StringBuffer();    try{        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//2,装载驱动程序    }    catch(Exception e){    }    Connection con;    Statement stmt;    ResultSet rs;    try{        result.append("<table border=1>");        String uri="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=jspStudent";//3,定义要连接的数据库资源        con=DriverManager.getConnection(uri,"sa","123456");//4,建立与数据库的连接        stmt=con.createStatement();//5,建立语句对象        /*获取表格的第一行,即列属性名*/        DatabaseMetaData metadata=con.getMetaData();        ResultSet rs1=metadata.getColumns(null,null,"JStudent",null);        int countColumns=0;//表的列数        result.append("<tr>");        while(rs1.next()){            countColumns++;            String columnName=rs1.getString(4);            result.append("<td>"+columnName+"</td>");         }        rs1.close();//关闭结果集        result.append("</tr>");        /*获取查询的内容*/        String sql="select * from JStudent Where number='"+number+"'";//6,声明sql语句        rs=stmt.executeQuery(sql);//执行sql语句,返回一个查询结果集(二维表)        while(rs.next()){//7,对结果集进行处理            result.append("<tr>");            for(int k=1;k<=countColumns;k++){                result.append("<td>"+rs.getString(k)+"</td>");//每行的内容            }//for结束            result.append("</tr>");                 }//while结束        result.append("</table>");         //查询结束        rs.close();//关闭结果集        stmt.close();//关闭语句对象        con.close();//关闭连接          }//try结束    catch(SQLException e){        result.append(e);    }    jspContext.setAttribute("queryResultByNumber",new String(result));   %>

4,byName.jsp

<%@ page contentType="text/html; charset=utf-8" %><%@  taglib tagdir="/WEB-INF/tags" prefix="inquire" %><html><body bgcolor=pink><%    request.setCharacterEncoding("utf-8");    String name=request.getParameter("name");%><inquire:NameCondition name="<%=name%>" />姓名含有<%=name%>的记录: <br><%=queryResultByName%></body></html>

5,NameCondition.tag

<%@ tag pageEncoding="utf-8" %><%@ tag import="java.sql.*" %><%@ attribute name="name" required="true" %><%@ variable name-given="queryResultByName" scope="AT_END" %><%   try{       Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");      }   catch(Exception e)   {      }  StringBuffer result=new StringBuffer();  ResultSet rs;  try{      String uri="jdbc:sqlserver://127.0.0.1:1433;DataBaseName=jspStudent";      Connection con=DriverManager.getConnection(uri,"sa","123456");      DatabaseMetaData metadata=con.getMetaData();       ResultSet rs1=metadata.getColumns(null,null,"JStudent",null);      result.append("<table border=1>");      /*获取第一行的字段名*/      result.append("<tr>");      int columns=0;//列数      while(rs1.next()){          columns++;          String columnName=rs1.getString(4);          result.append("<td>"+columnName+"</td>");      }     result.append("</tr>");     Statement sta=con.createStatement();     String sql="select * from JStudent where name  like '%"+name+"%' ";     rs=sta.executeQuery(sql);     result.append("<tr>");     while(rs.next()){         for(int k=1;k<=columns;k++){             result.append("<td>"+rs.getString(k)+"</td>");         }          result.append("</tr>");     }//while结束     result.append("</table>");      con.close();  }//try结束  catch(SQLException e){      result.append(e);  }  jspContext.setAttribute("queryResultByName",new String(result));%>

2.3 运行结果

(1)inputCondition.jsp输入查询条件
这里写图片描述
(2)根据学号查询
这里写图片描述
(3)根据姓名(模糊查询)
这里写图片描述

sql server的模糊查询:
%代表任意长度(长度可以为0)的字符串.例如a%b表示以a开头,以b结尾的任意长度的字符串.如acb,acdb,ab都满足要求.
select * from JStudent where name like ‘%花%’
%花%表示含有’花’的任意长度的字符串.
若要查询不含有’花’的在like前加 not 即可.

-(下横线)代表任意单个字符
例如a_b表示以a开头,以b结尾的长度为3的任意的字符串.如acb,adb等都满足要求.

阅读全文
0 0
原创粉丝点击