归结来说有JDBC、ODBC-JDBC桥接 两种方法:
一、JDBC连接 Oracle的步骤
(1)装载并注册数据库的JDBC驱动程序
载入JDBC驱动:
Class.forName("oracle.jdbc.driver.OracleDriver");
注册JDBC驱动:
java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
(2)建立与数据库的连接
要建立与数据库的连接,首先要创建指定数据库的URL。连接数据库的URL对象,利用DriverManager 的getConnection方法建立的。数据库URL对象与
网络资源
的统一资源定位类似,其构成格式如下:
jdbc:subProtocol:subName://hostname:port;DatabaseName=ⅹⅹⅹ
其中:
jdbc表示当前通过Java的数据库连接进行数据库访问;
subProtocol表示通过某种驱动程序支持的数据库连接机制;
subName表示在当前连接机制下的具体名称;
hostname表示
主机名
;
port表示相应的连接端口;
DatabaseName表示要连接的数据库的名称。
这里以与
Oracle数据库
的连接为例:
连接Oracle 8/8i/9i数据库(用thin模式)
url = jdbc:oracle:thin:@hostip:1521:oracleSID;
注意:hostip指主机的ip地址,oracleSID指数据库的SID。
再者确定连接数据库的用户名与密码,即user和password 的值:
user = “ⅹⅹⅹ “;
password = “ⅹⅹⅹ“;
最后使用如下语句:
Connection con=java.sql.DriverManager.getConnection(url,user,password);
(3)创建Statement对象
例如:
Statement stmt = con.createStatement();
(4)调用并执行SQL语句
例如:
String sql = “select a,b,c from table1";//table1为你所要查询的表名,a,b,c为所要查询的字段
ResultSet rs = stmt.executeQuery(sql);
(5)访问ResultSet中的记录集并从中取出记录
例如:
rs.next( );
rs.absolute(4);
String col1=rs.getString(1);
……..
(6)依次关闭ResultSet、Statement和Connection对象
例如:
rs.close();
stmt.close();
con.close();
二、ODBC-JDBC桥接
1 、工作原理:
JDBC- ODBC (Open Database Connectivity,ODBC) 桥驱动 程序由 Sun 与 Merant 公司 联 合开 发 , 主要功能是 把 JDBC API 调 用 转换 成 ODBC API 调 用 , 然后 ODBC API 调 用 针对 供 应 商的 ODBC 驱动 程序来 访问 数据 库 , 即利用 JDBC- ODBC 桥 通 过 ODBC 来存 储 数据源 。如下 图 : JDBC-ODBC 应 用模式
图
1.1JDBC-ODBC
应
用模式
JDBC- ODBC
桥
是一个
JDBC
驱动
程序
,
对
ODBC
而言
,
它像是通用的
应
用程序
,
桥为
所有适用于
ODBC
的数据
库实现
JDBC
。它作
为
sun.jdbc.odbc
包
实现
,
其中包含一个用来
访问
ODBC
的本地
库
。由于
ODBC
被广泛地使用
,
所以
桥
的
优
点是
让
JDBC
能
够访问
几乎所有的数据
库
。
桥
支持
ODBC 2.x,
这
是当前大多数据
ODBC
驱动
程序支持的版本。
桥驱动
程序
为
Java
应
用程序提供了一种把
JDBC
调
用映射
为
ODBC
调
用的方法。因此,需要在客
户
端机器上安装
ODBC
驱动
。
JDBC-ODBC
桥
在
JDBCAPI
和
ODBCAPI
之
间
提供了一个
桥
梁,
这
个
桥
把
标
准的
JDBC
调
用翻
译
成
对应
的
ODBC
调
用,然后通
过
ODBC
库
把它
们发
送到
ODBC
数据源。
2 、 JDBC-ODBC 所用的配置
桥
作
为
包
sun.jdbc.odbc
与
JDK
一起自
动
安装
,
无需特殊配置
。
Java 2 SDK
类库
中包含了用于
JDBC-ODBC
桥
接
驱动
程序的
类
,
因此不再需要安装任何附加包就可以使用。但是
客
户
机需要通
过
生成数据源名
(Data Source Names , DSN)
来配置
ODBC
管理器
。
DSN
是一个把数据
库
、
驱动
程序、一些可
选
的
设
置
连
接起来的命名配置。具体配置方法如下
(
在
Windows XP
环
境下
) :
( 1)
控制面板中
,
管理工具
→
数据源
(ODBC)->
系
统
DSN;
(如
图
2.1
)
图
2.1
( 2)
在
ODBC
数据源管理器中的
“
系
统
DSN
”
中添加系
统
数据源
(
如果没有找到
该
数据源的
驱动
程序
则
需要下
载
安装
)
。
要注意
,
一定要用系
统
(DSN)
数据源
,
不能用用
户
(DSN)
数据源
,
因
为
servlet
是
伪
系
统
(DSN),
所有的
jsp
、
servlet
程序
,
需要
连
接
jdbc- odbc
驱动
的
话
,
都只能用系
统
( DSN)
数据源
,
不能用用
户
( DSN)
数据源。
3 、各数据 库 的不同配置( 图 解)
3.1 Access
(1)
添加
->Driver do Microsoft Access(*.mdb)->
完成
(2) 输 入数据源名称 yiliangdian_access
( 3 )在数据 库标签 中 --> 选择 ,在列表中 选择 需要 连 接的数据 库 student.
( 4 ) 单击 高 级 可 设 置登 陆 名称 yiliangdian 与密 码 123456 。 这 三 项 必 须 与程序中 DriverManager.getConnection("jdbc:odbc: yiliangdian_access "," yiliangdian "," 123456 ") 一致。
3.2 mysql
(1)
如
access
中的(
1
)。
(2)
选择
mysql
数据源
驱动
,
如果没有
则
需要下
载
安装。
->
完成
(3) 输 入数据源名称 yiliangdian_mysql,Server:localhost( 如果 连 接其它 主机, 输 入 IP),User:root,Password:123456,Databasse:student. ->OK
4 、 应 用
/**
* filename: joaccess.java
* fuction:
实现
jdbc-odbc
桥连
接方式方式
* writtenby yiliangdian @ 2008-4-18
**/
import java.sql.*;
public class joaccess {
public static void main(String[] args) {
//
建立和数据库的连接时要用好
Connection
接口
Connection con;
//
提供在基层连接上运行
SQL
语句
Statement sql;
//
在
Statement
执行了
SQL
语句以后,结果值是以结果集的方式返回的。
ResultSet rs;
try {
//jdbc-odbc
桥连接方式需要加载
jdbc-odbc
方式的驱动程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){
System.out.println(""+e);
}
try{
//DriverManager
类是
JDBC
的管理层,作用于用户和驱动之间。
DriverManager
类跟踪可用的驱动
//
程序,并在数据库和相应驱动程序之间建立连接。
chenyuaccess
是建立的数据源名称,后两项是
//
用户名,密码是建立数据源时设立的与数据库中的密码无关,该用户名密码可以为空。
//
不同的数据库连接只需要改变源名称,用户名和密码
con = DriverManager.getConnection("jdbc:odbc:yiliangdian_access","yiliangdian","123456");
//
创建
Statement,
获取
Statement
实例,用于执行
SQL
语句
sql = con.createStatement();
//
运行查询语句,返回
ResultSet
对象
rs = sql.executeQuery("select * from chengjibiao");
while(rs.next()){
String number = rs.getString(1);
String name = rs.getString(2);
Date date = rs.getDate(3);
int math = rs.getInt(4);
System.out.println("
学号:
" + number);
System.out.println("
姓名:
" + name);
System.out.println("
生日:
" + date);
System.out.println("
数学:
" + math);
}
con.close();
}catch(SQLException e1)
{
System.out.println("sql
语句出错
:"+e1);
}
}
}