• 沒有找到結果。

创建数据库连接

处理异常和警告 处理异常和警告 处理异常和警告 处理异常和警告

4.1 创建数据库连接

4.1 创建数据库连接

JDBC 数据库应用的第一步便是创建与数据库的连接 数据库连接是其他操作的基础 创建数据库连接会使用到java.sql.Connection 类 对数据库的操作都是在该类对象上完成

4.1.1 加载驱动程序

在与特定数据库建立连接前 JDBC 都会加载相应的驱动程序 JDBC 可用的驱动程序 有JDBC-ODBC 桥接驱动器 JDBC 网络驱动器或是由特定数据库厂商提供的驱动程序等

加载驱动程序的一种简单方法是使用Class.forName 方法显示加载一个驱动程序 如 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

该语句将加载 Sun 公司为用户提供的 JDBC-ODBC 桥接驱动器 与数据库相连时 DriverManager 将使用已加载的驱动程序

在下面的例程 4-1 中 我们使用 Class.forName 方法来加载一个驱动程序 并使用 DriverManager 的 getDrivers 方法来获得已加载驱动程序的信息

例程 4-1 import java.sql.*;

import java.util.*;

class testDBdriver{

public static void main(String argv[]){

try{

//加载驱动程序 sun.jdbc.odbc.JdbcOdbcDriver Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Enumeration e=DriverManager.getDrivers();

//列举已加载的驱动程序 for(;e.hasMoreElements();)

{System.out.println(e.nextElement());}

}

//简单处理程序中可能发生的异常 catch(java.lang.Exception e){

System.out.println("Code has error");

} } }



4.1.2 建立连接

创建与数据源的连接可以使用DriverManager 的 getConnection 方法 getConnection 方 法使用的格式有三种

getConnection(url);

getConnection(url info);

getConnection(url user pwd);

关于getConnection 方法的详细使用方法读者可参考 JDBC API 在下面的例子中我们 将使用getConnection 方法来创建与 ODBC 数据源 testDSN 的连接 在成功创建连接后 显 示数据库的相关信息

例程 4-2

import java.net.URL;

import java.sql.*;

import java.util.*;

class testDBconnect{

public static void main(String argv[]){

String url user pwd;

if (argv.length ==0) {

System.out.println("Forget DataSource");

System.out.println("use 'java testDBconnect testDSN sa'");

System.exit(0);

}

url="jdbc:odbc:"+argv[0];

if (argv.length >1){

user=argv[1]; }

else { user=""; } if (argv.length >2){

pwd=argv[2]; }

else { pwd=""; }

try{

//加载驱动程序

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

//建立连接

Connection con=DriverManager.getConnection(url user pwd);

//使用 DatabaseMetaData 对象获取数据源相关信息 DatabaseMetaData dd=con.getMetaData();

//获得数据源 URL

System.out.println("Data Source URL: "+dd.getURL());



//获得驱动程序名称

System.out.println("Driver Name: "+dd.getDriverName());

//获得驱动程序版本号

System.out.println("Driver Version: "+dd.getDriverVersion());

//获得数据源连接的 DBMS 名称

System.out.println("Dtabase ProductName:"+dd.getDatabaseProductName());

//获得数据源连接的 DBMS 版本号

System.out.println("Dtabase ProductVersion:"+dd.getDatabaseProductVersion());

con.close();

}

catch(Exception ex){

System.out.println(ex.getMessage() );

ex.printStackTrace ();

} }

}

源程序编译后执行java testDBconnect testDSN sa 可获得如下结果 Data Source URL: jdbc:odbc:testDSN

Driver Name: JDBC-ODBC Bridge (ODBCJT32.DLL) Driver Version: 1.2001 (04.00.3711)

Dtabase ProductName: ACCESS Dtabase ProductVersion: 04.00.0000

如果不能建立连接 将输出相应的错误信息

4.1.3 处理连接选项

对于一个成功创建的连接 可以通过Connection 的 setXXX 方法设置连接选项 如 用setReadOnly()方法设置只读 用 setAutoCommit()方法设置自动提交等

在下面的例程4-3 中创建了一个连接 并将其设置为只读状态 例程 4-3

import java.sql.*;

class connectchoice{

public static void main(String argv[]){

String url="jdbc:odbc:testDSN";

try{

//加载驱动程序

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

//建立连接



Connection con=DriverManager.getConnection(url "sa" "");

//将连接设置为只读 con.setReadOnly(true);

System.out.println("Dtabase is read only?: "+con.isReadOnly());

System.out.println("Dtabase is AutoCommit?: "+con.getAutoCommit());

con.close();

}

catch(Exception ex){

System.out.println(ex.getMessage() );

ex.printStackTrace ();

} }

}

编译后运行java connectchoice 可获得如下结果 Dtabase is read only?: true

Dtabase is AutoCommit?: true

4.1.4 获得数据源信息

成功创建连接后 便可以对数据源进行各种操作 在例程 4-2 中的 DatabaseMetaData dd=con.getMetaData()语句可获得一个 DatabaseMetaData 对象 dd 使用该对象将获得有关数 据源的相关信息 在例程4-2 中使用到了下面的一些方法

getURL () 获得数据源 URL

getDriverName() 获得驱动程序名称 getDriverVersion() 获得驱动程序版本号

getDatabaseProductName() 获得数据源连接的 DBMS 名称 getDatabaseProductVersion() 获得数据源连接的 DBMS 版本号 在后面的章节中 我们将详细介绍DatabaseMetaData 接口

4.1.5 关闭连接

关闭连接可使用java.sql.Connection 的 close()方法 当不在对数据源进行操作时 都应 在程序关闭前关闭建立的连接 在例程4-2 和例程 4-3 中都使用到了 close()方法

4.1.6 处理异常和警告

在创建数据源连接的过程以及对连接的操作过程中 都可能产生异常和一些警告信 息 异常将使应用程序无法正常执行下去 警告则不会影响到程序的运行 在 4.5 节中将 详细介绍处理异常和警告的方法