您的位置:首页 > 数据库

web实验报告——数据库连接与应用(SQL Server)

2010-09-13 16:27 615 查看
实验九数据库连接的应用
一、实验目的
通过实验掌握下列知识:
1、掌握数据库连接技术;
2、掌握使用JAVA技术与select语句进行数据查询的方法;
3、掌握使用JAVA技术进行数据插入等修改操作的方法。
 
二、实验内容及步骤
1、实验说明

1)把sql server的权限认证方式改为混合认证(通过“企业管理器”)



2)把服务器实例TCP/IP监听端口改为1433(通过“服务器网络实用工具”)



   3)试运行web应用dbexample中的testSqlServer.jsp页面,若有输出,说明sql server链接成功。
附:JDBC相关代码和sql server驱动包下载地址http://wljx.zjut.edu.cn/common/script/download.jsp?fileid=33965&resid=43288
建立一个edu的数据库,当中在建一个T_User的表
表的参数类型和数据为
 


 
 


 
 
 
 
 
 
 
 
新建odbc
LOCAL(WINDOWS NT)——安全性——登陆——新建登陆
 


双击新建的登陆,并修改它们的相关属性
 


修改数据库的登陆
LOCAL(WINDOWS NT)——右键属性——安全性——SQL Server和Windows
 


建立ODBC:
控制面板——管理工具——数据源(ODBC)——系统DSN——localServer——配置


 
新建一个bdexample的web project工程,再建一个testsSqlServer.jsp文件,
testsSqlServer.jsp源代码:
<%@ page language="java" contentType="text/html; charset=gb2312"
    pageEncoding="gb2312"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Insert title here</title>
</head>
<body>
 
<%@ page import="java.sql.*" %>
<%
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");// .microsoft.jdbc.sqlServer.SQLServerDriver");
Connection conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=edu","test","test");
 
Statement st=conn.createStatement();
st.setMaxRows(20);
 
String sqlStr="select * from T_User";
ResultSet rs=st.executeQuery(sqlStr);
%>
<table width=200 border=1>
<tr>
<td width=100>用户名</td>
<td width=100>密码</td>
 
</tr>
<%
 
while(rs.next())
{%>
 <tr>
 <td><%=rs.getString("uid")%></td>
 <td><%=rs.getString("upwd")%></td>
 </tr>
<%
}
 
rs.close();    st.close();    conn.close();
%>
</table>
</body>
</html>
 
运行结果:
 


2、数据库操作练习
在实验八的基础上修改ShoppingCart例子,实现基于数据库的购物车程序
1)数据库设计(access或sql server 2000);
a)通过access或sql server 2000创建一个数据库BookStore;
b)在该数据库中创建包括用户信息与商品信息两张表;
2)修改登录页面,将登录表单信息与数据库中读出的信息(用户名与密码)进行比较,以判断是否登录成功;
源代码:
Lodin.jsp
<%@ page language="java" contentType="text/html; charset=GB2312"
    pageEncoding="GB2312"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
<title>用户登录</title>
</head>
<body>
<form action="http://localhost:8080/testsql/servlet/CheckPwd" method="get">
用户名:<input type=text name=userid size=20><br>
密码:   <input type=password name=userpwd size=20><br>
<input type=submit value="登录">
</form>
 
</body>
</html>
 
CheckPwd.java
import java.io.IOException;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;
 
/**
 *ServletimplementationclassCheckPwd
 */
publicclass CheckPwd extends HttpServlet {
    privatestaticfinallongserialVersionUID = 1L;
      
    /**
     *@seeHttpServlet#HttpServlet()
     */
    public CheckPwd() {
        super();
        // TODO Auto-generated constructor stub
    }
 
    /**
     *@seeHttpServlet#doGet(HttpServletRequestrequest,HttpServletResponseresponse)
     */
    protectedvoid doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       String uid = request.getParameter("userid");
       System.out.println(uid);
       String pwd = request.getParameter("userpwd");
       System.out.println(pwd);
       String query = "select * from T_user where uid='"+uid+"' and upwd='"+pwd+"'";
       System.out.println(query);
       //String query = "select * from T_user where uid='zhujiadun' and upwd='123456' ";
      
       try{
          Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
           Connection con = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=edu","test","test");
           Statement st = con.createStatement();
           ResultSet rs = st.executeQuery(query);
           System.out.println("ok");
           if(rs.next()){
              response.sendRedirect("KidsBooksPage");
           }
           else{
              response.sendRedirect("http://localhost:8080/testsql/Login.jsp");
           }
           rs.close();
           st.close();
           con.close();
       }catch (ClassNotFoundException ex){
       } catch (SQLException e) {
           e.printStackTrace();
       }
      
 
     }
 
    /**
     *@seeHttpServlet#doPost(HttpServletRequestrequest,HttpServletResponseresponse)
     */
    protectedvoid doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       // TODO Auto-generated method stub
       doGet(request,response);
    }
 
}
运行结果:

 




3)修改CatalogPage,实现从数据库中读取书本信息并且显示。
源代码:
在sql Server的edu数据库中新建一张KidsBooks表

格式和内容如下





import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
 
 
 
publicclass KidsBooksPage extends CatalogPage {
 publicvoid init() {
      String[] ids = new String[3];
      try{
          Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
           Connection con = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=edu","test","test");
           Statement st = con.createStatement();
           ResultSet rs = st.executeQuery("select * from KidsBooks ");
           int i = 0;
           while(rs.next()){
              ids[i] = rs.getString(1);
              i++;
           }
           setItems(ids);
           setTitle("All-Time Best Children's Fantasy Books");
 
           rs.close();
           st.close();
           con.close();
       }catch (ClassNotFoundException ex){
       } catch (SQLException e) {
        e.printStackTrace();
       }
 
 }
}
 
 

运行结果:



中途遇到的问题:
JDBC连接SQLServer的错误Error establishing socket

我在网上查询到问题解决的方式有大概如下 种: 
一 配置错误 
    jdbc配置语句为: jdbc:microsoft:sqlserver://server_name:1433 
其中的sqlserver、server_name和端口号都要看仔细了。 
二 1433端口问题 
    可以通过命令“netstat -an”,来查看是否开了1433端口,如果列表中没有,要增开端口。 
    要保持jdbc配置语句( jdbc:microsoft:sqlserver://server_name:1433)中的端口与数据库传输协议默认的端口相同。 
MSSQL设置端口号步骤如下: 
1. 打开企业管理器,依次在控制台根目录 ->Microsoft SQL Servers->SQL Server 组,列出一部分数据库服务器。 
2. 右击我们要连接的数据库服务器,选择属性,在常规选项卡点击网络配置弹出新窗口。 
3. 在启用的协议区域我们选择 TCP/IP ,点击属性按钮,弹出新窗口。在这个窗口有网络协议默认值设置,一般默认端口是:1433。 如果你在url中用的端口号与这个不同,就会出现错误。应保持二者相同。 
三 没打补丁 
   可以用如下的方式查看MSSQL的版本: 
打开企业管理器-〉工具-〉SQL查询分析器-〉帮助-〉关于 
查看MSSQL的详细版本号 
如果 是  8.00.194  就是还没打补丁 
         8.00.760  就是SP3 
         8.00.2039 就是SP4
我一直遇到的问题就是因为三没打补丁,等安装了补丁之后,问题就解决了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息