歸結(jié)來說有JDBC、ODBC-JDBC橋接 兩種方法:
一、JDBC連接 Oracle的步驟
(1)裝載并注冊數(shù)據(jù)庫的JDBC驅(qū)動程序
載入JDBC驅(qū)動:
Class.forName("oracle.jdbc.driver.OracleDriver");
注冊JDBC驅(qū)動:
java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
(2)建立與數(shù)據(jù)庫的連接
要建立與數(shù)據(jù)庫的連接,首先要創(chuàng)建指定數(shù)據(jù)庫的URL。連接數(shù)據(jù)庫的URL對象,利用DriverManager 的getConnection方法建立的。數(shù)據(jù)庫URL對象與
網(wǎng)絡(luò)資源
的統(tǒng)一資源定位類似,其構(gòu)成格式如下:
jdbc:subProtocol:subName://hostname:port;DatabaseName=ⅹⅹⅹ
其中:
jdbc表示當(dāng)前通過Java的數(shù)據(jù)庫連接進(jìn)行數(shù)據(jù)庫訪問;
subProtocol表示通過某種驅(qū)動程序支持的數(shù)據(jù)庫連接機(jī)制;
subName表示在當(dāng)前連接機(jī)制下的具體名稱;
hostname表示
主機(jī)名
;
port表示相應(yīng)的連接端口;
DatabaseName表示要連接的數(shù)據(jù)庫的名稱。
這里以與
Oracle數(shù)據(jù)庫
的連接為例:
連接Oracle 8/8i/9i數(shù)據(jù)庫(用thin模式)
url = jdbc:oracle:thin:@hostip:1521:oracleSID;
注意:hostip指主機(jī)的ip地址,oracleSID指數(shù)據(jù)庫的SID。
再者確定連接數(shù)據(jù)庫的用戶名與密碼,即user和password 的值:
user = “ⅹⅹⅹ “;
password = “ⅹⅹⅹ“;
最后使用如下語句:
Connection con=java.sql.DriverManager.getConnection(url,user,password);
(3)創(chuàng)建Statement對象
例如:
Statement stmt = con.createStatement();
(4)調(diào)用并執(zhí)行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)依次關(guān)閉ResultSet、Statement和Connection對象
例如:
rs.close();
stmt.close();
con.close();
?
二、ODBC-JDBC橋接
1 、工作原理:
? ? ?JDBC- ODBC (Open Database Connectivity,ODBC) 橋驅(qū)動 程序由 Sun 與 Merant 公司 聯(lián) 合開 發(fā) , 主要功能是 把 JDBC API 調(diào) 用 轉(zhuǎn)換 成 ODBC API 調(diào) 用 , 然后 ODBC API 調(diào) 用 針對 供 應(yīng) 商的 ODBC 驅(qū)動 程序來 訪問 數(shù)據(jù) 庫 , 即利用 JDBC- ODBC 橋 通 過 ODBC 來存 儲 數(shù)據(jù)源 。如下 圖 : JDBC-ODBC 應(yīng) 用模式
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?
圖
1.1JDBC-ODBC
應(yīng)
用模式
? ? ? ? ?JDBC- ODBC
橋
是一個
JDBC
驅(qū)動
程序
,
對
ODBC
而言
,
它像是通用的
應(yīng)
用程序
,
橋為
所有適用于
ODBC
的數(shù)據(jù)
庫實現(xiàn)
JDBC
。它作
為
sun.jdbc.odbc
包
實現(xiàn)
,
其中包含一個用來
訪問
ODBC
的本地
庫
。由于
ODBC
被廣泛地使用
,
所以
橋
的
優(yōu)
點是
讓
JDBC
能
夠訪問
幾乎所有的數(shù)據(jù)
庫
。
橋
支持
ODBC 2.x,
這
是當(dāng)前大多數(shù)據(jù)
ODBC
驅(qū)動
程序支持的版本。
橋驅(qū)動
程序
為
Java
應(yīng)
用程序提供了一種把
JDBC
調(diào)
用映射
為
ODBC
調(diào)
用的方法。因此,需要在客
戶
端機(jī)器上安裝
ODBC
驅(qū)動
。
JDBC-ODBC
橋
在
JDBCAPI
和
ODBCAPI
之
間
提供了一個
橋
梁,
這
個
橋
把
標(biāo)
準(zhǔn)的
JDBC
調(diào)
用翻
譯
成
對應(yīng)
的
ODBC
調(diào)
用,然后通
過
ODBC
庫
把它
們發(fā)
送到
ODBC
數(shù)據(jù)源。
2 、 JDBC-ODBC 所用的配置
? ?
橋
作
為
包
sun.jdbc.odbc
與
JDK
一起自
動
安裝
,
無需特殊配置
。
Java 2 SDK
類庫
中包含了用于
JDBC-ODBC
橋
接
驅(qū)動
程序的
類
,
因此不再需要安裝任何附加包就可以使用。但是
客
戶
機(jī)需要通
過
生成數(shù)據(jù)源名
(Data Source Names , DSN)
來配置
ODBC
管理器
。
DSN
是一個把數(shù)據(jù)
庫
、
驅(qū)動
程序、一些可
選
的
設(shè)
置
連
接起來的命名配置。具體配置方法如下
(
在
Windows XP
環(huán)
境下
) :
? ? ? ? ?( 1)
控制面板中
,
管理工具
→
數(shù)據(jù)源
(ODBC)->
系
統(tǒng)
DSN;
(如
圖
2.1
)
?
?
?
?
圖
2.1
? ? ? ? ?( 2)
在
ODBC
數(shù)據(jù)源管理器中的
“
系
統(tǒng)
DSN
”
中添加系
統(tǒng)
數(shù)據(jù)源
(
如果沒有找到
該
數(shù)據(jù)源的
驅(qū)動
程序
則
需要下
載
安裝
)
。
要注意
,
一定要用系
統(tǒng)
(DSN)
數(shù)據(jù)源
,
不能用用
戶
(DSN)
數(shù)據(jù)源
,
因
為
servlet
是
偽
系
統(tǒng)
(DSN),
所有的
jsp
、
servlet
程序
,
需要
連
接
jdbc- odbc
驅(qū)動
的
話
,
都只能用系
統(tǒng)
( DSN)
數(shù)據(jù)源
,
不能用用
戶
( DSN)
數(shù)據(jù)源。
3 、各數(shù)據(jù) 庫 的不同配置( 圖 解)
? ?
3.1 Access
? ? ? ? ? ?(1)
添加
->Driver do Microsoft Access(*.mdb)->
完成
? ? ? ? ? ?(2) 輸 入數(shù)據(jù)源名稱 yiliangdian_access ? ?
? ? ( 3 )在數(shù)據(jù) 庫標(biāo)簽 中 --> 選擇 ,在列表中 選擇 需要 連 接的數(shù)據(jù) 庫 student.
?
? ? ?
( 4 ) 單擊 高 級 可 設(shè) 置登 陸 名稱 yiliangdian 與密 碼 123456 。 這 三 項 必 須 與程序中 DriverManager.getConnection("jdbc:odbc: yiliangdian_access "," yiliangdian "," 123456 ") 一致。
? ? ? 3.2 mysql
? ? ? ? ? ? (1)
如
access
中的(
1
)。
? ? ? ? ? ?
(2)
選擇
mysql
數(shù)據(jù)源
驅(qū)動
,
如果沒有
則
需要下
載
安裝。
->
完成
?
? ? ? ? ?(3) 輸 入數(shù)據(jù)源名稱 yiliangdian_mysql,Server:localhost( 如果 連 接其它 主機(jī), 輸 入 IP),User:root,Password:123456,Databasse:student. ->OK
?
4 、 應(yīng) 用
/**
* filename: joaccess.java
* fuction:
實現(xiàn)
jdbc-odbc
橋連
接方式方式
* writtenby yiliangdian @ 2008-4-18
**/
import java.sql.*;
public class joaccess {
? ?public static void main(String[] args) {
? ? ? //
建立和數(shù)據(jù)庫的連接時要用好
Connection
接口
? ? ? ?Connection con;
? ? ? //
提供在基層連接上運行
SQL
語句
? ? ? Statement sql;
? ? ? //
在
Statement
執(zhí)行了
SQL
語句以后,結(jié)果值是以結(jié)果集的方式返回的。
? ? ? ResultSet rs;
? ? ? try {
? ? ? ? ?
//jdbc-odbc
橋連接方式需要加載
jdbc-odbc
方式的驅(qū)動程序
? ? ? ? ? ?Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
? ? ?}catch(ClassNotFoundException e){
? ? ? ? ? System.out.println(""+e);
? ? ?}
? ? ?try{
? ? ? ? ? ?//DriverManager
類是
JDBC
的管理層,作用于用戶和驅(qū)動之間。
DriverManager
類跟蹤可用的驅(qū)動
? ? ? ? ? ? //
程序,并在數(shù)據(jù)庫和相應(yīng)驅(qū)動程序之間建立連接。
chenyuaccess
是建立的數(shù)據(jù)源名稱,后兩項是
? ? ? ? ? ? ?//
用戶名,密碼是建立數(shù)據(jù)源時設(shè)立的與數(shù)據(jù)庫中的密碼無關(guān),該用戶名密碼可以為空。
? ? ? ? ? ? ?
//
不同的數(shù)據(jù)庫連接只需要改變源名稱,用戶名和密碼
? ? ? ? ?
con = DriverManager.getConnection("jdbc:odbc:yiliangdian_access","yiliangdian","123456");
? ? ? ? ? ? //
創(chuàng)建
Statement,
獲取
Statement
實例,用于執(zhí)行
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("
學(xué)號:
" + number);
? ? ? ? ? ? ? ? ? ?System.out.println("
姓名:
" + name);
? ? ? ? ? ? ? ? ? ?System.out.println("
生日:
" + date);
? ? ? ? ? ? ? ? ? ?System.out.println("
數(shù)學(xué):
" + math);
? ? ? ? ? ? ? }
? ? ? ? ?
con.close();
? ? ?}catch(SQLException e1)
? ? ?{
? ? ? ? ? ? ? ? System.out.println("sql
語句出錯
:"+e1);
? ? ? ?}
}
}
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
