随着电子商务及动态网站的迅速发展Java 网络数据库编程得到了越来越广泛的应用
JDBC由一组用Java语言编写的类组成它已成为一种供数据库开发者使用的标准API通过JDBC本身提供的一系列类和接口Java 编程开发人员能够很方便地编写有关数据库方面的应用程序
JDBC简介
JDBC(Java Database Connectivity) 是Java 实现数据库访问的API(Application Programming Interface)与Microsoft 的ODBC(Open Database Connectivity) 一样JDBC是建立在X/Open SQL CLI(Call Level Interface)基础上的JDBC的主要功能是管理存放在表中的数据所以它定义了一系列与关系数据库进行交互的类和接口如数据库连接SQL 语句结果集和元数据等
一般来说JDBC 的工作主要分为个步骤首先与某一关系数据库建立连接然后向数据库发送SQL 语句实现对数据库的操作最后取得处理结果
实现上述JDBC基本功能的个步骤程序示例如下
connectioncon=DriveManagerGetConnection(jdbc:odbc: ghqrootpassword):
//建立与数据库的连接
Statement stmt=concreatestatement(); //建立语句对象
ResultSet rs=stmtexecuteQuery(SELECT ab FROM Table)
//运行SQL语句返回数据库操作结果
while (rsnext()){
int x=getInt(a);//获得数据库表记录a项的值
string s=getstring(b); //获得数据库表记录b项的值
}
JDBC 接口和驱动程序
JDBC 接口
JDBC提供的接口主要有两种一种是面向一般应用程序开发人员的JDBC API另一种是底层的JDBC Driver API如图所示
图 使用JDBC的基本结构
JDBC API是一系列抽象的接口应用程序开发人员通过它可以编写访问数据库的Java应用程序JDBC API中抽象类的实现是由驱动程序开发商提供的驱动程序实现了应用程序和某个数据库产品之间的接口它的管理器则对应用程序和驱动程序之间的交互进行控制JDBC API主要用来连接数据库和直接调用SQL命令执行各种SQL语句利用JDBC API可以执行一般的SQL语句动态SQL语句以及带IN和OUT参数的存储过程
JDBC中的驱动程序必须提供实现方法的接口JDBC API被定义在javasql包中其中定义了JDBC API用到的所有类接口和方法主要的类和接口有
· DriverManager类——处理驱动程序的装入为新的数据库连接提供支持驱动程序要向该类注册后才能被使用进行连接时该类根据JDBC URL选择匹配的驱动程序
· javasqlDriver接口——驱动程序接口负责确认URL与驱动程序的匹配建立到数据库的连接等其中的方法需要有相应的驱动程序实现
· javasqlConnection接口——表示到特定数据库的连接其中的方法需要有相应的驱动程序实现
· javasqlStatement接口——为SQL语句提供一个容器包括执行SQL语句取得查询结果等方法此接口有两个子类型
()javasqlPreparedStatement用于执行预编译的SQL语句
()javasqlCallableStatement用于执行对一个数据库内嵌过程的调用
· javasqlResultSet接口——提供对结果集进行处理的手段
JDBC Driver API 是面向驱动程序开发商的接口对于大多数数据库驱动程序来说仅仅实现JDBC API提供的抽象类就可以了也就是说每一个驱动程序都必须提供对于javasqlConnectionjavasqlStatementjava sqlPreparedStatement和javasqlResultSet等主要接口的实现方法如果目标DBMS提供有OUT参数的内嵌过程那么还必须提供javasqlCallableStatement 接口每个数据库驱动程序必须提供一个javasqlDriver类使得系统可以由 javasqlDriverManager来管理
一个典型的驱动程序是在ODBC上提供对JDBC的实现接口从而提供与ODBC接口的JDBCODBC桥就像前面图所显示的由于JDBC放在ODBC之后所以实现起来简单而且高效
JDBC 驱动程序
JDBC驱动程序可以分为下面四种类型分别适用于不同的场合如图所示
图 驱动程序的种类型
· JDBCODBC桥驱动程序
Sun产品通过ODBC驱动程序提供JDBC的存取即经过ODBC 驱动程序访问数据库在大多数情况下ODBC二进制代码必须在每个使用该数据库驱动程序的客户端安装所以这种驱动程序主要适用于公司内部网络或者在三层结构中用Java编写的应用服务器代码
下面以Access数据库为例来具体说明代码如下
Classforname( sunjdbcodbcJdbcOdbcDriver );//调用JDBCODBC 驱动程序
Connection con=DriverManagergetConnection(jdbc:odbc:tempsa);
//与数据库连接temp 是配置Access数据库ODBC建立的数据源sa 为用户名口令为空
Statement s=concreateStatement(ResultSetTYPE_SCROLL_SENSITIVEResultSet
CONCUR_READ_ONLY);
//创建Statement
ResultSet rs=sexecuteQuery(select * from test);
//执行查询结果存放在ResultSet中 test是一个数据库表
· 本机应用编程接口的Java 驱动程序
此类驱动程序转换JDBC调用客户端的针对特定数据库系统的API如OracleSybaseInformixDB 或其它的 DBMS像桥驱动程序一样这种类型的驱动程序要求在每一个客户机上安装一些二进制代码
下面以IBM DB 数据库为例来具体说明
Classforname( COMibmdbjdbcapp DBDriver);//调用JDBC 本地驱动程序
String db=test;//数据库名
String URL=jdbc:db:+db;//URL 值
String userid=adm;//数据库用户名
String password=abc;//数据库用户密码
Connection con=DriverManagergetConnection(URLuseridpassword);//与数据库连接
Statement s=concreateStatement();//创建Statement
· 数据库中间件的纯Java 驱动程序
此类驱动程序将JDBC调用转换成为中间件供应商的协议然后通过中间件服务器转换成为DBMS协议网络服务器中间件可以连接所有Java客户端到各种不同的数据库但是特定的协议取决于供应商通常这种方式是JDBC最方便的选择提供商可为Internet用户提供产品套件为了使这些产品能够支持Internet访问他们还必须处理安全防火墙穿越等需求各个提供商正在增加JDBC驱动程序到他们现存的中间件产品中
下面以Oracle 数据库为例来具体说明
DriverManagerregisterDriver(new oraclejdbcdriverOracleDriver())
//在Oracle中注册驱动程序Driver Manager类允许动态地注册驱动程序
Connection conn=
DriverManagergetConnection(jdbc:oracle:thin:@ghq::booksystemmanager)
/**
* 将连接字符串传递给这个方法以建立到数据库的连接连接字符串中的第一个值指明thin JDBC 驱动程序
* (用的是@符号)连接一个名为ghq的Hostname(或连接IP地址)端口是数据库的Oracle
SID是book连* 接的用户名是system口令是manager
**/
Statement statemt=conncreateStatement()//创建一个SQL语句对象
ResultSet rsltset=statemtexecuteQuery(SELECT USERNAME FROM book)
//执行查询结果存放在ResultSet中book是一个数据库表
· 直接连接数据库的纯Java 驱动程序
这种驱动程序是本地协议的纯Java驱动程序它转换JDBC调用由DBMS直接使用的网络协议这种方式允许从客户机到DBMS服务器的直接调用是Intranet访问的一种行之有效的解决方案因为这些协议多数是专用的因此数据库提供商将成为这种驱动程序的主要来源
下面以MS SQL 数据库为例来具体说明
后台数据库采用MS SQL Server相应的JDBC Driver为MS SQL Server特定的驱动程序cominettdsTdsDriver(可以在网上下载)Java版本是xJDBC 版本是
String url=jdbc:jdbc:inetdae:localHost:;//inetdae是驱动程序子协议名
String login=sa;
String password=;
ClassforName(cominettdsTdsDriver);
Connection con=DriverManagergetConnection(urlloginpassword);
Statement s=concreateStatement();
ResultSet rs=sexecuteQuery(select * from table);
JDBC 使用方法
目前Java使用最多的Applet是Web文件的一个组成部分其中有数据库存取的Applet和能够使用JDBC来接触数据库的Applet
Java Applet 通过JDBC 访问数据库的工作流程可以用图 来描述
图 Applet通过JDBC访问数据库的工作流程
首先Web 浏览器从Web 服务器中下载嵌有Applet 的HTML 页面解释并执行Applet 字节码当执行到有访问数据库的Java 语句时Applet 直接将相应的Java 命令发送给装在服务器上的JDBC通过JDBC 向后端数据库发出SQL 请求然后数据库将处理结果通过JDBC 直接返回给AppletApplet 通过JDBC 访问数据库的方法是一种Web 数据库访问的实现方案