回麻雀苑主页          到麻雀苑-搜狐博客

4-7动态网页综合查询数据库数据

作者:老麻雀 2006-11-5 10:06:11

动态网页综合查询数据库数据
  JSP动态网页连接访问数据库,查询数据的操作,上一节介绍了查询的基本操作。而在实际应用中,查询的方式多种多样,本节介绍数据库数据的模糊查询、分类查询。

一、 范例的演示和代码清单
演示的前提和上一节完全相同。
演示步骤:
1. 启动IE,在地址栏键入http://127.0.0.1:8080/ch4/ch4-42.htm,如图4-55所示:
  
  图4-55
  窗口中有三种查询方式,四个“查询”按钮。
2. 单击查询全部数据的“查询”按钮如图4-56所示:

图4-56
3. 在模糊查询的姓名栏中,输入“赵”,单击“查询”按钮,数据库表中“姓名”字段中,包含“赵”的记录。显示在屏幕上,如图4-57所示:

图4-57

4. 在分类查询的按班级列表框中,选择“04003”,单击“查询”,数据库表中“班级”字段中,是“04003”的记录。显示在屏幕上,按钮如图4-58所示:

图4-58
5. 在分类查询的按性别列表框中,选择“男”,单击“查询”按钮,数据库表中“性别”字段中,是“男”的记录。显示在屏幕上,如图4-59所示:

图4-59
  以上在ch4-42.htm网页窗口中,选择不同的查询方式,都得到了符合查询条件的查询结果。实际上每个“查询”按钮,指向了不同的JSP动态网页。这个范例是由一个HTML静态网页ch4-22.htm和四个JSP动态网页ch4-32.jsp、ch4-33.jsp、ch4-34.jsp、ch4-35.jsp构成。
  四个网页的代码如下:
◇-◇-◇-◇-◇-◇-◇-◇ 查询数据库 ◇-◇-◇-◇-◇-◇-◇-◇
范例ch4-42.htm
1) <html>
2) <head>
3) <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
4) <title>查询数据库</title>
5) <body  bgcolor="FFFFCC">
6) <p>&nbsp;</p>
7) <p>
8) <table width="716" border="0">
9)   <tr>
10)     <td height="45">查询全部数据: <a href="ch4-32.jsp"><img src="img/chaxun.jpg" width="38" height="18" border="0"></a>
11)   </tr>
12)   <tr>
13)     <td height="45">模糊查询: </td>
14)   </tr>
15)   <tr>
16)     <td height="45"><form name="form1" method="post" action="ch4-33.jsp">
17)       &nbsp;&nbsp;&nbsp;&nbsp;姓名
18)           <input name="name" type="text" id="name">
19)           <input type="submit" name="Submit" value="查询">
20)     </form></td>
21)   </tr>
22)   <tr>
23)     <td height="45">分类查询:</td>
24)   </tr>
25)   <tr>
26)     <td height="45"><form name="form2" method="post" action="ch4-34.jsp">
27)   &nbsp;&nbsp;&nbsp;&nbsp;按班级
28)       <select name="clas" id="clas">
29)         <option value="04001">04001</option>
30)         <option value="04002">04002</option>
31)         <option value="04003">04003</option>
32)         </select>
33)       <input type="submit" name="Submit" value="查询">
34)     </form></td>
35)   </tr>
36)   <tr>
37)     <td height="45"><form name="form3" method="post" action="ch4-35.JSP">
38)   &nbsp;&nbsp;&nbsp;&nbsp;按性别
39)   <select name="sex" id="sex">
40)     <option value="男">男</option>
41)     <option value="女">女</option>
42)   </select>     
43)   <input type="submit" name="Submit" value="查询">
44)     </form></td>
45)   </tr>
46) </table>
47) <p><a href="ch4.htm" target="_top">返回</a></p>
48) <p>&nbsp; </p>
49) </body>
50) </html>
◇-◇-◇-◇-◇-◇-◇-◇-◇ 查询Access数据库 ◇-◇-◇-◇-◇-◇-◇-◇-◇
范例ch4-32.jsp
1) <html>
2) <head>
3) <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
4) <title>查询Access数据库</title>
5) <style type="text/css">
6) body { background-color: #FFFFCC;}
7) </style></head>
8) <body><p>
9)   <%@page contentType="text/html;charset=gb2312" import="java.sql.*"%>
10)   <%
11)  String DBDriver="sun.jdbc.odbc.JdbcOdbcDriver";   
12)  String ConnStr="jdbc:odbc:ch4";                          
13)  String sql="select * from st";
14)  String temp1,temp2,temp3,temp4,temp5,temp6;
15) try 
16)   {
17)    Class.forName(DBDriver);
18)   }
19)  catch(java.lang.ClassNotFoundException e)
20)   {
21)    System.err.println("database:"+e.getMessage());
22)    out.println("驱动未能加载");
23)   }
24)  try
25)   {
26)    Connection conn=DriverManager.getConnection(ConnStr," "," ");
27)    ResultSet rs;
28)    Statement stmt=conn.createStatement();
29)    rs=stmt.executeQuery(sql);
30)    out.println("数据库中数据如下:<br>");
31)    out.println("<table border=1><tr align=center><td>班级<td>学号<td>姓名<td>性别<td>密码<td>E-mail<tr>");
32)    while(rs.next())
33)    {
34)     temp1=rs.getString(1);
35)     temp2=rs.getString(2);
36)     temp3=rs.getString(3);
37)     temp4=rs.getString(4);
38)     temp5=rs.getString(5);
39)     temp6=rs.getString(6);
40) out.print("<tr><td>"+temp1+"<td align=center>"+temp2+"<td align=center>"+temp3+"<td align=center>"+temp4+"<td align=center>"+temp5+"<td align=center>"+temp6+"</a><tr>");
41)    }
42)    rs.close();
43)    stmt.close();
44)    conn.close();
45)   }
46)  catch(SQLException e)
47)   {
48)    System.err.println("executeQuery:"+e.getMessage());
49)    out.println("数据未能读出");
50)   }
51) %>
52) </table>
53) <p><a href="ch4-3.htm">返回资料填写页</a></p>
54) </body>
55) </html>
◇-◇-◇-◇-◇-◇-◇-◇-◇-◇ 按姓名查询 ◇-◇-◇-◇-◇-◇-◇-◇-◇-◇
范例ch4-33.jsp
1) <html>
2) <head>
3) <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
4) <title> 按姓名查询</title>
5) </head>
6) <body  bgcolor="FFFFCC">
7)   <%@page contentType="text/html;charset=gb2312" import="java.sql.*"%>
8)   <%
9)    String name=new String(request.getParameter("name"));
10)  String DBDriver="sun.jdbc.odbc.JdbcOdbcDriver";   
11)  String ConnStr="jdbc:odbc:ch4";                          
12)  String temp1,temp2,temp3,temp4,temp5,temp6;
13)  String sql="select * from st where 姓名 like "+""%"+name+"%"";
14)  try 
15)   {
16)    Class.forName(DBDriver);
17)   }
18)  catch(java.lang.ClassNotFoundException e)
19)   {
20)    System.err.println("database:"+e.getMessage());
21)    out.println("驱动未能加载");
22)   }
23)  try
24)   {
25)    Connection conn=DriverManager.getConnection(ConnStr," "," ");
26)    ResultSet rs;
27)    Statement stmt=conn.createStatement();
28)    rs=stmt.executeQuery(sql);
29)    out.println("查询结果如下::<br>");
30)    out.println("<table border=1><tr align=center><td>班级<td>学号<td>姓名<td>性别<td>密码<td>E-mail<tr>");
31)    while(rs.next())
32)    {
33)     temp1=rs.getString(1);
34)     temp2=rs.getString(2);
35)     temp3=rs.getString(3);
36)     temp4=rs.getString(4);
37)     temp5=rs.getString(5);
38)     temp6=rs.getString(6);
39) out.print("<tr><td>"+temp1+"<td align=center>"+temp2+"<td align=center>"+temp3+"<td align=center>"+temp4+"<td align=center>"+temp5+"<td align=center>"+temp6+"</a><tr>");
40)    }
41)    rs.close();
42)    stmt.close();
43)    conn.close();
44)   }
45)  catch(SQLException e)
46)   {
47)    System.err.println("executeQuery:"+e.getMessage());
48)    out.println("数据未能读出");
49)   }
50) %>
51) </table>
52) <p><a href="ch4-42.htm">返回查询页</a></p>
53) </body>
54) </html>

◇-◇-◇-◇-◇-◇-◇-◇-◇-◇ 按班级查询 ◇-◇-◇-◇-◇-◇-◇-◇-◇-◇
范例ch4-34.jsp
1) <html>
2) <head>
3) <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
4) <title>按班级查询</title>
5) </head>
6) <body  bgcolor="FFFFCC">
7)   <%@page contentType="text/html;charset=gb2312" import="java.sql.*"%>
8) <%
9)     String name=new String(request.getParameter("clas"));
10)  String DBDriver="sun.jdbc.odbc.JdbcOdbcDriver";
11)  String ConnStr="jdbc:odbc:ch4";
12)  String temp1,temp2,temp3,temp4,temp5,temp6;
13)  String sql="select * from st where 班级="+"""+name+""";
14)  try 
15)   {
16)    Class.forName(DBDriver);
17)   }
18)  catch(java.lang.ClassNotFoundException e)
19)   {
20)    System.err.println("database:"+e.getMessage());
21)    out.println("驱动未能加载");
22)   }
23)  try
24)   {
25)    Connection conn=DriverManager.getConnection(ConnStr," "," ");
26)    ResultSet rs;
27)    Statement stmt=conn.createStatement();
28)    rs=stmt.executeQuery(sql);
29)    out.println("查询结果如下::<br>");
30)    out.println("<table border=1><tr align=center><td>班级<td>学号<td>姓名<td>性别<td>密码<td>E-mail<tr>");
31)    while(rs.next())
32)    {
33)     temp1=rs.getString(1);
34)     temp2=rs.getString(2);
35)     temp3=rs.getString(3);
36)     temp4=rs.getString(4);
37)                 temp5=rs.getString(5);
38)                 temp6=rs.getString(6);
39) out.print("<tr>"+"<td>"+temp1+"<td>"+temp2+"<td>"+temp3+"<td>"+temp4+"<td>"+temp5+"<td>"+temp6+"</tr>");
40)    }
41)    rs.close();
42)    stmt.close();
43)    conn.close();
44)   }
45)  catch(SQLException e)
46)   {
47)    System.err.println("executeQuery:"+e.getMessage());
48)   }
49)  %>
50) </table>
51) <p><a href="ch4-42.htm">返回查询页</a></p>
52)
53) </body>
54) </html>

◇-◇-◇-◇-◇-◇-◇-◇-◇-◇ 按性别查询 ◇-◇-◇-◇-◇-◇-◇-◇-◇-◇
范例ch4-35.jsp
1) <html>
2) <head>
3) <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
4) <title>按性别查询</title>
5) </head>
6) <body  bgcolor="FFFFCC">
7)   <%@page contentType="text/html;charset=gb2312" import="java.sql.*"%>
8) <%
9)     String name=new String(request.getParameter("sex"));
10)  String DBDriver="sun.jdbc.odbc.JdbcOdbcDriver";
11)  String ConnStr="jdbc:odbc:ch4";
12)  String temp1,temp2,temp3,temp4,temp5,temp6;
13)  String sql="select * from st where 性别="+"""+name+""";
14)  try 
15)   {
16)    Class.forName(DBDriver);
17)   }
18)  catch(java.lang.ClassNotFoundException e)
19)   {
20)    System.err.println("database:"+e.getMessage());
21)    out.println("驱动未能加载");
22)   }
23)  try
24)   {
25)    Connection conn=DriverManager.getConnection(ConnStr," "," ");
26)    ResultSet rs;
27)    Statement stmt=conn.createStatement();
28)    rs=stmt.executeQuery(sql);
29)    out.println("查询结果如下::<br>");
30)    out.println("<table border=1><tr align=center><td>班级<td>学号<td>姓名<td>性别<td>密码<td>E-mail<tr>");
31)    while(rs.next())
32)    {
33)     temp1=rs.getString(1);
34)     temp2=rs.getString(2);
35)     temp3=rs.getString(3);
36)     temp4=rs.getString(4);
37)                 temp5=rs.getString(5);
38)                 temp6=rs.getString(6);
39) out.print("<tr>"+"<td>"+temp1+"<td>"+temp2+"<td>"+temp3+"<td>"+temp4+"<td>"+temp5+"<td>"+temp6+"</tr>");
40)    }
41)    rs.close();
42)    stmt.close();
43)    conn.close();
44)   }
45)  catch(SQLException e)
46)   {
47)    System.err.println("executeQuery:"+e.getMessage());
48)   }
49)  %>
50) </table>
51) <p><a href="ch4-42.htm">返回查询页</a></p>
52)
53) </body>
54) </html>
  
二、 网页重点代码的分析
  静态网页Ch4-42.htm:
  Ch4-42.htm页面的作用是提供四个查询的入口。
第一项, 查询全部数据,“查询”按钮是一幅图片,链接指向ch4-32.jsp。
第二项, 模糊查询是一个表单,表单中只有一个文本框“姓名”,“查询”按钮属于表单的提交按钮。表单的action指向ch4-33.jsp。
第三项, 分类查询的“按班级”也是一个表单,表单中只有一个下拉列表,列表的值分别为“04001”、“04002”、“04003”三项,“查询”按钮属于表单的提交按钮。表单的action指向ch4-34.jsp。
第四项, 分类查询的“按性别”还是一个表单,表单中只有一个下拉列表,列表的值分别为“男”、“女”两项,“查询”按钮属于表单的提交按钮。表单的action指向ch4-35.jsp。
  这四个查询是相互之间,没有直接联系的单独查询。每个查询调用自己的JSP文档。这个HTML文档只是把四个查询(一个链接、三个表单)做到了一个页面上。
  查询全部数据,ch4-32.jsp
  这个动态网页,在前面第六节中已经进行了具体分析,本节不再重复。这里只是根据页面的设计需求,添加了这样一个链接。
  模糊查询,ch4-33.jsp
  这个动态网页,和ch4-32.jsp没有本质上的区别,只是多了一行(第9行)获得数据的代码,String name=new String(request.getParameter("name"));另外查询的SQL语句中使用了模糊查询,其他的代码和ch4-32.jsp内容是一样的。模糊查询的SQL语句在代码的第13行:
13) String sql="select * from st where 姓名 like "+""%"+name+"%"";
  代码中的“name”如果获得的数据是“赵”,SQL语句的原型如下:
      select * from st where 姓名 like " % 赵 %"
  其中的like是模糊查询的关键字,两个% %之间的内容,是查询条件中包含的内容。这条SQL语句的含义是,查询st表,姓名字段中包含“赵”的所有记录。
  分类查询“按班级”,ch4-34.jsp
  这个动态网页,和ch4-33.jsp除了第9行String name=new String (request.getParameter ("clas"));获得数据的内容不同,第13行查询的SQL语句不同,其他的代码内容是完全相同的。SQL语句是典型的条件查询语句,第13行的代码如下:
13) String sql="select * from st where 班级="+"""+name+""";
  这行代码中的“name”如果获得的数据是“04003”,SQL语句的原型如下:
      select * from st where 班级 = " 04003"
  这条SQL语句的含义是,查询st表中,班级字段的值为“04003”的所有记录。
  分类查询“按性别”,ch4-35.jsp
  这个动态网页,和ch4-34.jsp除了第9行String name=new String(request.getParameter("sex"));获得数据的内容不同,第13行查询的SQL语句不同,其他的代码内容是完全相同的。SQL语句是典型的条件查询语句,第13行的代码如下:
13) String sql="select * from st where 性别="+"""+name+""";
  这行代码中的“name”如果获得的数据是“男”,SQL语句的原型如下:
      select * from st where 性别 = " 男 "
  这条SQL语句的含义是,查询st表中,性别字段的值为“男”的所有记录。
  
  本节的范例,都是专门进行数据查询的动态网页。在网站的设计中,往往写入数据前,要查询一下是否写入的数据记录,是重复记录。如果是重复记录,将进行拦截。不是重复记录,才允许写入。在修改数据前,也要查询一下,将数据库表的指针,定位到需要修改的记录,然后才进行修改。这种与其他操作相配合进行的查询,在后面的范例中,将进行介绍。请读者届时给予注意。

 

 

我也说两句
E-File帐号:用户名: 密码: [注册]
评论:(内容不能超过500字,如果您不填写用户名和密码只能以游客的身份发表评论。)

*评论内容将在30分钟以后显示!
发文时请务必注意:
一、遵守国家相关法律规定,如 《北京地区互联网站电子公告服务倡议书》, 《全国人大常委会关于维护互联网安全的决定》 及中华人民共和国其他各项有关法律法规。一旦违犯法律法规,您将承担一切因您的行为而直接或间接导致的民事或刑事法律责任,本站工作人员有义务配合相关部门,提供必要的技术资料(如IP地址等)。
二、自觉遵守爱国、守法、自律、真实、文明的原则,严禁发表有人身攻击倾向、有造谣生事嫌疑的言论,严禁发表虚假广告、色情、网络传销性质的内容,本站管理人员有权删除违反规定的内容或取消违规网友的发文权限甚至删除其ID。

 

段保珠 版权所有     E-mail:dbz@sina.com
阿酷科技 Arkoo.com  提供底层技术