一个基本的JDBC开发可以描述为包含下列的步骤:
(1). 引入相应的类
(2). 选择合适的JDBC驱动程序并加载
(3). 分配一个Connection对象
(4). 分配一个Statement对象
(5). 使用该Statement对象进行查询等操作
(6). 从取得的ResultSet对象中获取相应得数据
(7). 关闭ResultSet对象
(8). 关闭Statement对象
(9). 关闭Connection对象
引入相应的类
首先是引入相应的类和包。任何使用JDBC的源程序都需要输入java.sql包:
import java.sql.*;
然后声明如下的一些对象:
ResultSet rs = null;
Connection conn = null;
其中Connection对象代表与数据库的连接。连接过程包括所执行的SQL语句和在该连接上所返回的结果。一个应用程序可与单个数据库有一个或多个连接,或者可与许多数据库有连接。
装载驱动程序
装载驱动程序共有三种方法:
用Class.forName()方法显式装载驱动,如:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
执行该代码将装载驱动,并且在装载时,驱动将自动向JDBC注册自己。使用Class.forName()方法可能抛出一个ClassNotFoundException异常,所以在驱动程序类有可能不存在时,要捕获这个异常
try { //注册数据库 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); } //捕获异常 catch(ClassNotFoundException e) { System.out.println(e.getMessage()); //...... }
注意:
每个Driver类在得到加载的时候,一般都会创建它本身的一个实例,并通过调用DriverManager类的RegisterDriver方法来自动注册该实例。有些人喜欢显式地调用newInstance()方法来强行实施这一发布,然而这样可能出现问题:Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
这样通常会创建第二个多余的对象。另外DriverManager类中的所有方法都是static类型的,而构造器的生命类型为private,所以他们操作整个类,而不是操作具体的对象,也不可能创建DriverManager对象。
把驱动作为参数在JVM启动时传递给它
使用-D参数,例如:
Java-D jdbc.dervers = com.microsoft.sqlserver.jdbc.SQLServerDriver example.ImageViewer
这个方法的好处是它允许代码用于其它数据库,而不用重新编译。唯一要修改的东西是URL。此时需要将驱动程序的安装路径天就哀悼环境变量ClassPath里面。
- 采用设置系统属性的方法装载驱动
通过使用一个Properties对象来提供驱动程序所需的全部信息,并为该对象设置“关键字-属性值”对,通过系统调用的方法可以设置jdbc.drivers属性:
System.setProperty("jdbc.drivers", "com.microsoft.sqlserver.jdbc.SQLServerDriver");
第一个参数是要设置的属性的关键字,第二个参数为值。这种设置方法有可能涉及安全管理器的问题,并抛出一个SecurityException类型的异常,因此需作异常处理。
第二种与第三种方法类似,立足于设置系统属性,这两种方法可以更方便的移植代码到新的运行环境中,只要修改相应的URL。但后两种方法需要持久的预设环境,并且也要考虑安全管理器的影响,如果安全管理器有效,并且一个安全策略已在目标系统上得到设置,那么这两种设置方法有可能被禁止设置系统属性。