回麻雀苑主页          

4-4用JDBC-ODBC连Access

作者:老麻雀 2006/11/5 10:02:07

使用JDBC-ODBC桥连接Access数据库
  上一节已经介绍,连接Access数据库JSP动态网页的代码和前面的范例大同小异。所不同的事先准备工作的内容。Access数据库是微软公司Office软件系列的一个组件。微软的数据库产品,只能使用JDBC-ODBC桥进行连接。
一、 范例演示和相应的准备工作
  演示的前提准备工作如下
1. 配置好开发运行环境;将随书光盘中的范例ch4文件夹,复制到resin2.1.6\doc文件夹内;(演示前面范例已完成的,略过这一步)
2. 安装Access数据库;(计算机中有Access不必重装,没有安装的,使用Office2000以上版本的安装盘,补充安装即可。)
3. 启动Access创建ch4数据库;并在ch4库中创建名称为st的表。表中有班级,学号,姓名,性别,密码,email六个字段,字段类型都使用“文本”;(ch4文件夹中,已经创建好ch4数据库和表st,只要计算机中装好了Access,可以略过这一步)
4. 配置Access数据源;
5. 启动JSP引擎;演示范例
  
  对接触Access数据库较少的读者,这里介绍一下Access数据库建库、建表的操作。(因为文件夹中,已存在数据库ch4,这里创建的数据库,名称为std)
1) 单击“开始”-“程序”-“Microsoft Office”-“Microsoft Office Access 2003”启动Access。如图4-38所示:
  
  图4-38
2) 单击菜单中“文件”-“新建”,再选择单击“空数据库”如图4-39所示:
  
  图4-39
3) 在保存位置下拉列表中,找到resin-2.1.6\doc\ch4文件夹;文件名,键入数据库的名称(本例输入的数据库名称是std,因为文件夹中已存在名为ch4的数据库),如图4-40所示:

图4-40
4) 单击“创建”按钮,如图4-41所示:数据库创建完成,下面进行表的创建。

图4-41
5) 双击“使用设计器创建表”,开始建表的工作,如图4-42所示

图4-42
6) 在第一行字段名称位置输入“班级”,回车后选择数据类型为“文本”,再回车,创建第二个字段。直到将所需的字段创建完。单击工具栏中的“保存”按钮,如图4-43所示:

图4-43
7) 输入表的名称“st”,单击“确定”按钮。弹出是否定义主键的对话框,如图4-44所示 :

图4-44
8) 本范例没有使用主键。选择“否“,关闭建好的表st,可以看到建好的表st已经显示在列表中,如图4-45所示:

图4-45
9) 至此Access数据库std和库中的表st已经创建完成。

  配置Access数据源的操作,和前面配置SQL Server数据源的操作略有不同。下面进行具体介绍:
1) 单击“开始”-“设置”-“控制面板”-“管理工具”-“数据源ODBC”,如图4-46所示:

图4-46
2) 选择“系统DSN”标签,单击右边的“添加”按钮,如图4-47所示:

图4-47
3) 选择“Driver do Microsoft Access (*.mdb)”,单击“完成”按钮。如图4-48所示:

图4-48
4) 数据源名,输入名称。(可以是任何字母,也可以使用汉字),这里为了便于记忆,输入的是和数据库相同的名称ch4。然后单击“选择”按钮,如图4-49所示:

图4-49
5) 弹出选择数据库对话框,在右边窗口找到站点文件夹,单击后左边窗口可以见到创建好的数据库ch4.mdb,单击选中后,单击“确定”按钮。如图4-50所示:

图4-50
6) 至此Access数据源的配置基本完成,可以在“选择”按钮的上一行看到,数据源的数据库位置和名称。
  单击“确定”按钮完成Access数据源的配置。回到“ODBC数据源管理器”,在单击“确定”按钮,退出数据源设置界面。
  
7) Access数据源不要求必须设置“用户名”和“密码”。如果要指定数据源的“用户名”和“密码”,在图4-50所示界面。单击“高级”按钮,如图4-51所示:填好“登录名称”、“密码”的内容,单击“确定”按钮,返回在图4-50所示界面。

图4-51

  演示步骤:
1. 启动JSP引擎后,启动IE,在地址栏键入http://127.0.0.1:8080/ch4/ch4-3.htm,如图4-52所示:
  
  图4-52
2. 在表单下拉列表选择数据,文本框中输入数据,填写完成后,单击“提交”按钮。如图4-53所示:

图4-53
3. 出现以上窗口界面,说明数据库连接成功,数据已经写入数据库的表中。单击“查看写入信息”,可以看到写入的数据,如图4-54所示:

图4-54
4. 如返回主页。单击“查看数据库信息”同样可以看到图4-55所示的内容。
  范例的演示,如果不能出现图4-53所示的界面,一般只有三个原因:
1) 没有配置好数据源;
2) 计算机中没有安装Access数据库
3) 错误的改动了ch4-31.jsp中的代码。

二、 动态网页的代码
  下面是范例ch4-31.jsp和ch4-32.jsp的代码:
◇-◇-◇-◇-◇-◇-◇-◇ 将数据写入Access数据库 ◇-◇-◇-◇-◇-◇-◇-◇
范例ch4-31jsp
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 clas    =new String(request.getParameter("clas"));
12)  String na      =new String(request.getParameter("na"));
13)  String name    =new String(request.getParameter("name"));
14)  String sex     =new String(request.getParameter("sex"));
15)  String password=new String(request.getParameter("pass"));
16)  String password2=new String(request.getParameter("repass"));
17)  String email   =new String(request.getParameter("email"));
18)  
19)  String DBDriver="sun.jdbc.odbc.JdbcOdbcDriver";          
20)  String ConnStr="jdbc:odbc:ch4";                      
21)  String sql="insert into st (班级,学号,姓名,性别,密码,email) values (""+clas+"",""+na+"",""+name+"",""+sex+"",""+password+"",""+email+"")";
22)  try 
23)   {
24)    Class.forName(DBDriver);
25)   }
26)  catch(java.lang.ClassNotFoundException e)
27)   {
28)    System.err.println("database:"+e.getMessage());
29)    out.println("驱动未能加载");
30)   }
31)  try
32)   {
33)    Connection conn=DriverManager.getConnection(ConnStr,"","");
34)    Statement stmt=conn.createStatement();
35)    stmt.executeUpdate(sql);
36)    out.println("数据写入成功,信息存储完成");
37)    stmt.close();
38)    conn.close();
39)   }
40)      catch(SQLException e)
41)   {
42)    System.err.println("executeUpdate:"+e.getMessage());
43)    out.println("数据未能写入");
44)   }
45)  %>
46) </p>
47) <p><a href="ch4-3.htm">返回主页</a></p>
48) <p> <a href="ch4-32.jsp">查看写入信息</a> </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>
二、JSP动态网页的代码分析
  范例ch4-31.jsp是将数据写入数据库的动态网页,代码由五个部分构:
1. 从表单获得数据;
2. 定义三个字符串变量,分别承载JDBC驱动、连接参数url内容、要运行的SQL语句;
3. 加载JDBC-ODBC桥驱动;
4. 连接Access数据库;
5. 运行SQL语句,将数据写入数据库;
  这个范例的代码,和上一范例使用JDBC-ODBC桥连接SQL Server 2000的ch4-21.jsp基本上是一样的,只是更换了数据源的名称。表中字段数量和名称重新作了安排。连接Access数据库的相关代码如下:
  连接Access的代码行:
  在ch4-31.jsp中:
   19) String DBDriver="sun.jdbc.odbc.JdbcOdbcDriver";          
   20) String ConnStr="jdbc:odbc:ch4";     
   24) Class.forName(DBDriver);
   33) Connection conn=DriverManager.getConnection(ConnStr,"","");
  第19行,定义字符串变量DBDriver,赋值的内容是JDBC-ODBC驱动程序。
  第20行,定义字符串变量ConnStr,赋值是连接语句中url参数的内容,其中“ch4”是数据源的名称。
  第24行,加载JDBC=ODBC驱动
  第33行,连接数据库的语句,和上两个范例的不同,“用户名”、“密码”的内容在这里都为空值,因为我们在配置Access数据源时,没有设置“用户名”、“密码”。
  
  范例ch4-32.jsp是查询数据库数据的动态网页:其中连接Access数据库的代码和ch4-31.jsp的内容完全相同,不再具体分析。

 

 

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

*评论内容将在30分钟以后显示!
发表须知:
一、用户须严格遵守国家法律和政策,包括但不限于《全国人大常委会关于维护互联网安全的决定》、《信息网络传播权保护条例》等规定,审慎、合法地利用伊妃(E-file)平台发表言论、作品。
二、用户的言论、行为若涉嫌违法或侵权,用户可能被强制承担因该行为直接或间接导致的全部法律责任。依照法律法规规定,伊妃(E-file)运营方有义务提供用户资料,有义务和权利采取删除、屏蔽、断开链接等各种必要措施。
三、伊妃(E-file)中心授权网络法律专业研究服务机构“网络法苑”为用户及客户提供包括免费咨询在内的全方位的法律支持。

 

版权所有:段保珠   电话:64616239   E-mail:dbz@sina.com   京ICP备06044461号
阿酷科技 Arkoo.com 提供底层技术