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等都满足要求.
- JSP中Sql Server的JDBC数据库条件查询
- JSP中使用JDBC驱动访问MS SQL SERVER数据库的例子
- JSP之JDBC操作Sql Server数据库
- JSP之JDBC操作Sql Server数据库
- JSP 使用JDBC连接 SQL Server数据库
- SQL SERVER 条件语句的查询
- 在jsp中如何有JDBC连接各种数据库之SQL SERVER 2000
- Spring-JDBC:在使用JdbcTemplate进行条件查询时没有返回数据,但是sql直接在数据库中执行是有数据返回的。
- jdbc动态条件查询防止sql注入的解决方案
- 多表多查询条件对SQL Server查询性能的优化
- sql server中实现数据库查询的记录分页
- Jsp中连接数据库写sql查询
- JDBC操作SQL Server数据库的步骤
- JDBC连接sql server数据库的步骤
- Java/JSP中使用JDBC连接SQL Server 2005
- Java/JSP中使用JDBC连接SQL Server 2005
- Java/JSP中使用JDBC连接SQL Server 2005
- Java/JSP中使用JDBC连接SQL Server 2005
- caffe的python接口学习:caffemodel中的参数及特征的抽取(转载)
- 安装配置vsftpd
- 适配器模式学习和思考
- 171023 逆向-BDCTF(Re)
- 【C语言】基本数据类型
- JSP中Sql Server的JDBC数据库条件查询
- 我的小目标
- Java Bean技术
- Ubuntu 14.04数据库服务器--mysql的安装和配置
- leetcode解题方案--021--Merge Two Sorted Lists
- opencv之7.6计算联通区域的形状描述
- ElasticSearch学习33_报错:Could not reserve enough space for object heap
- 机器学习(基于Python)--k-近邻算法
- Divide and Conquer:241. Different Ways to Add Parentheses