歸結來說有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);
? ? ? ?}
}
}
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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