可访问性
JDBC提供一套高级类,能够使任何熟悉SQL和Java的人写数据库应用程序。考虑到像网络和数据库协议对于程序员来说是易懂的,所以这些都是通过JDBC驱动程序内的类处理。
访问数据库服务器的一致性
要做到这一点, JDBC规范在Java社区内部商定——而且每个数据库供应商要让他们的产品执行这些规范。
Thin和OCI驱动程序
Oracle提供两种主要类型的驱动程序。
OCI驱动程序(Oracle Call Interface ORACLE调用接口简称OCI):
OCI (type 2) 驱动程序由像访问数据库服务器的SQL * Plus工具所使用的由Java封装的低级别的Oracle调用接口(OCI)库的所组成。 OCI驱动程序可能比Thin驱动程序提供了更好的性能,然而它需要在本地计算机上安装OCI库。
`Thin'驱动程序:
也被称为Type 4驱动程序,Thin驱动程序是一个纯正的Java执行Oracle的网络协议(Net8)。由于是自包含的,所以它可以在任何安装或没安装Oracle的机器上使用, 甚至可以使用在applet应用程序类上。
连接到Oracle
下面我们会讨论如何使用两种类型的驱动程序来访问Oracle。首先,我们使用Thin驱动程序连接到Oracle并执行一个更新语句。请注意下面的例子仅仅是作为一个说明。试着去了解代码。你将有机会在下一节“亲手”做练习。
import java.io.*;
import java.sql.*;
public class OraThin {
public static void main(String[] args) {
try {
Connection con=null;
Class.forName("oracle.jdbc.driver.OracleDriver");
con=DriverManager.getConnection(
"jdbc:oracle:thin:@machine_name:1521:database_name",
"scott",
"tiger");
Statement s=con.createStatement();
s.execute("
INSERT INTO BOOKS VALUES
(
'A Tale of Two Cities',
'William Shakespeare',
4567891231,
'5-JAN-1962'
)
");
s.close();
con.close();
} catch(Exception e){e.printStackTrace();}
}
}
* 已经导入的java.sql包包含JDBC类。
* 在oracle.jdbc.driver包中的OracleDriver类被动态加载到Java运行时使用的Class.forName (...).
* 对数据库的请求连接与DriverManager.getConnection (...)的连接URL一致.
* SCOTT / TIGER是Oracle的用户名/密码。
* 我们使用的Connection和Statement类的实例来执行数据库操作。
* 持有这些使用资源的通过close()方法释放。
如果我们要使用OCI驱动程序,上面的JDBC连接URL需要改写。现在所需要的唯一的要素是数据库服务名称:database_name。其余的是通过使用本地Oracle配置文件解决。
DriverManager.getConnection( "jdbc:oracle:oci8:@database_name", "scott","tiger");
通用的数据库访问类
在本节中,我们介绍了DBOBJECT类允许连接到Oracle数据库,并执行SQL语句。你将需要下载DbObjectClasses.jar文件到你的安装目录,并运行命令(UNIX或DOS窗口):
jar xvf DbObjectClasses.jar
这会从文件中或得到下列文件:
* DbObject.java和DbObject.class,Java源代码和为我们的数据库访问类的类文件
* DbObject.conf,配置DBOBJECT的文件
* DbTest.java和DbTest.class,Java源代码和测试类DbTest的类文件。
接下来你需要编辑,修改和保存DbObject.conf文件:
DbObject.User = <用户名>和DbObject.Password = <你的Oracle密码>。默认情况下使用的是Thin驱动程序。您可以通过改变DbObject.DriverType为OCI8来尝试使用OCI驱动程序。
现在应该使用命令运行DbTest:
java DbTest
该程序将执行INSERT,UPDATE和SELECT语句。从现在起应该仔细阅读这两个Java源文件。