[返回]
中国计算机报1999年第35期
武苍林
Java语言的出现为推动Web数据库技术的发展提供了有力的支持。Java发明者SUN公司的子公司JavaSoft及时制定了Java与数据库的连接互连规范—JDBC(Java
Database Connectivity)。JDBC实现了Java 程序与数据库系统无缝连接。JDBC是一个支持基本SQL功能的通用底层API,它在不同的数据库功能模块层次上提供了一个统一的用户接口,为Java程序员提供了独立于特定的数据库系统而实现与网络数据库互连的方式。
JDBC访问数据库的过程是:用户通过浏览器从Web服务器上下载含有Java
Applet的HTML页面,如果其中的Java Applet调用了JDBC,则在客户端运行的Java
Applet直接与数据库系统建立连接,然后通过JDBC API完成对数据库的有关访问操作,并处理得到的结果。
图1 JDBC实现Web与数据库互连
JDBC包含两部分与数据库独立的API:一部分是面向程序开发人员的JDBC
API,另一部分是面向底层的JDBC Driver API。Java Applet或Java Application通过JDBC
API访问JDBC Driver Manager,JDBC Driver Manager再通过JDBC Driver API访问不同的JDBC驱动程序,从而实现对不同数据库的访问。JDBC提供了一个通用的JDBC
Driver Manager,用来管理各数据库软件商提供的JDBC驱动程序,从而访问其数据库。此外,对没有提供相应JDBC驱动程序的数据库系统,开发了特殊的驱动程序:JDBC-ODBC桥,该驱动程序支持JDBC通过现有的ODBC驱动程序访问其数据库系统。现在越来越多的数据库厂商都提供其数据库的JDBC驱动程序。图2表示JDBC的总体结构。
JDBC API提供了一系列的Java类接口。
● Java.sql.DriverManager
处理驱动程序的装载和建立新的数据库连接。
● Java.sql.Connection 完成对某一指定数据库的连接。
● Java.sql.Statement 管理在一指定数据库连接上的SQL语句的执行。
● Java.sql.ResultSet 从数据库返回的结果集。
JDBC API对数据库的一个典型访问过程为:首先使用JDBC的Driver类建立一个驱动程序,并使用DriverManager类的GetConnection()方法创建一个JDBC
Connection对象。然后,通过JDBC的Statement类的CreateStatement()方法创建一个SQL语句,执行该语句对象的ExecuteQuery()方法将返回一个ResultSet对象,ResultSet对象提供了由SQL查询所获得的结果集。
JDBC有两种常用的应用方案:一种是Java Applet, 另一种是Java
Application。Java Applet作为嵌入HTML文档的一部分在网络上进行传输的小应用程序,由浏览器对其下载并运行。它是Java
语言应用最广泛的形式,用于数据库访问的Applet使用JDBC与数据库进行交互。基于对网络安全的考虑,Java
Applet的操作权限有许多限制,Applet不能访问本地的文件系统和对任意主机建立网络连接,它必须遵守标准的安全模式,这种应用方案有许多安全方面的限制。而Java
Application则是一种用Java语言编写的应用程序,它与用其它语言编写的应用程序从功能上和使用范围上没有什么不同。Java
Application可以访问本地或网络上的任何资源,可以读写本地文件和与网络上的数据库服务器建立连接等。Java
Applet的执行需要装入到AppletViewer或能运行Java Applet的浏览器上;Java
Application则需要用Java的虚拟机来解释执行。
由于Java特有的虚拟机机制保证其极佳的安全性、跨平台性,同时也带来它执行速度慢的缺点。它特别适于在多平台网络环境下开发应用。
给出一个JDBC与数据库互连的Java Applet实例。本程序采用微软公司的Visual
J++1.1作为Java的开发工具,SQL Server作为Web数据库,源程序如下:
import tempjava.sql.;
import java.net.URL;
import java.sql.;
public class testconnection extends Applet
{
public static void main(String args[])
{
String url="jdbc:odbc:source";
try{//加载 jdbc-odbc bridge驱动程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//与数据库建立连接并显示
Connection con=DriverManager.getConnection(url);
checkForWarning(con.getWarnings());
DatabaseMetaData dma=con.getMetaData();
System.out.println("\n Connect to"+dma.getURL());
//创建对象
Statement sm=con.createStatement();
//执行SQL语句并显示
ResultSet rs=sm.executeQuery("SELECT xmvv,nlvv FROM jcxx WHERE bhvv=0015");
//关闭对象
rs.close();
sm.close();
//关闭连接
con.close();}}}
图2 JDBC总体结构