一.概述
JDBC API是一类Java API,用于访问几乎任何类型的表格式数据(JDBC是一个商标名,但很多人都误解为"Java DataBase Connectivity"的缩写)JDBC API由一组Java编程语言编写的类和接口组成,这些类和接口为数据库开发人员提供标准API,从而使得完全使用Java语言来编写具有业界标准的数据库程序成为可能.
二.JDBC API的功能
基于JDBC技术的驱动程序("JDBC驱动程序")可以完成三件事情:
(1)与数据源建立连接;
(2)将查询语句和更新语句发送到数据源;
(3)处理结果集.
下面的代码段给出了关于三个步聚的简单例子:
Connection con = DriverManager.getConnection( " jdbc:derby:MyDataBase " , " userName " , " password " );
// 创建语句
Statement stmt = con.createStatement();
// 发送SQL语句到数据源,并返回结果集
ResultSet rs = stmt.executQuery( " SELECT a,b,c FROM TABEL " );
// 处理结果
while (rs.next()) ... {
int x=rs.getInt("a");
String s=rs.getString("b");
float f=rs.getFloat("c");
}
正如上面的代码,JDBC API被用来直接调用SQL命令.
另外,因为JDBC API比较全面,且足够强大,因而可以作为其他API的基础,有许多可供替换的API是在JDBC API之上开发的,例如以下API:
(1)Java嵌入式SQL
包括Oracle,IBM,Sun和其他公司在内的联盟已经定义了SQLJ规范,为Java编程提供嵌入式SQL.
(2)持久Java对象技术
有两种Java技术使Java对象能够映射到关系数据库:
1. Java Data Objects(JDO)
2. Enterprise Java Beans---容器管理的持久性(Container Managed Persistence,CMP)和bean管理的持久性(Bean Managed Persistence,BMP)
通过使用这些技术位于数据库存储器(data store)中的数据可以映射成Java对象,而Java对象可以持久地存储在数据存储器中.
三.JDBC与ODBC的比较
在开发JDBC API之前,Microsoft的ODBC(Open DataBase Connectivty) API是用得最广泛的关系数据库访问编程接口.
那为什么不在Java编程语言中直接使用ODBC呢?
答案是可以在Java编程语言中使用ODBC,但不是直接的,而是通过使用JDBC-ODBC桥(Bridge)并在JDBC API的帮助下,才能达到最佳实现.
(1)ODBC不适合于在Java编程语言中直接使用,因为ODBC使用C接口,在应用程序的安全,实现,健壮性和可移植性方面,从Java中调用本地的C代码会有许多弊端.
(2)将ODBC C API直接转换成Java API并不是理想的方法,例如,Java无指针,而ODBC广泛使用指针.
(3)需要使用像JDBC这样的Java API,以便支持"纯Java"解决方案(即只使用Java API的解决方案)当使用ODBC时,ODBC驱动程序管理器和驱动程序必须手动安装在每一台客户机上,然而,当完全使用Java编写JDBC驱动程序时,JDBC代码在所有Java平台上都是可自动安装的,同时是可移植和安全的.
四.两层模型与三层模型
JDBC API支持两层数据库访问模型,又支持三层数据库访问模型.
两层模型:
在两层模型中,Java applet或Java应用程序直接与数据源通信.
三层模型:
在三层模型中,命令被发送到服务的中间层,中间层再将命令发送给数据源,数据源处理这些命令并将结果返回给中间层,接着将结果发送给用户.JDBC API在三层体系结构中间层的使用越来越广泛.