這些細(xì)節(jié)包括:
1、導(dǎo)入jdbc包
2、注冊oracle jdbc驅(qū)動程序
3、打開數(shù)據(jù)庫連接
4、執(zhí)行sql dml語句在數(shù)據(jù)庫表中獲取、添加、修改和刪除行
一、jdbc驅(qū)動程序
共有有4種
1、thin驅(qū)動程序
thin驅(qū)動程序是所有驅(qū)動程序中資源消耗最小的,而且完全用java編寫的。
該驅(qū)動程序只使用tcp/ip且要求oracle net。被稱為第4類驅(qū)動程序。
它使用ttc協(xié)議與oracle數(shù)據(jù)庫進(jìn)行通信。能夠在applet、application中使用。
2、oci驅(qū)動程序
oci驅(qū)動比thin需要資源要多,但性能通常好一點。oci驅(qū)動適合于部署在
中間層的軟件,如web服務(wù)器。不能在applet中使用oci驅(qū)動。是第2類驅(qū)動程序。
不完全用java寫的,還包含了c代碼。該驅(qū)動有許多附加的性能增強特性,
包括高級的連接緩沖功能。
注意:oci驅(qū)動要求在客戶計算機上安裝它。
3、服務(wù)器內(nèi)部驅(qū)動程序
服務(wù)器內(nèi)部驅(qū)動程序提供對數(shù)據(jù)庫的直接訪問,oracle jvm使用它與數(shù)據(jù)庫進(jìn)行通信。
oracle jvm是與數(shù)據(jù)庫集成的java virtual machine,可以使用oracle jvm將
java類裝載進(jìn)數(shù)據(jù)庫,然后公布和運行這個類中包含的方法。
4、服務(wù)器thin驅(qū)動程序
服務(wù)器端thin驅(qū)動程序也是由oracle jvm使用的,它提供對遠(yuǎn)程數(shù)據(jù)庫的訪問。
也是完全用java編寫的。
二、導(dǎo)入jdbc包
三、注冊oracle jdbc驅(qū)動程序
必須先向java程序注冊oracle jdbc驅(qū)動程序,然后才能打開數(shù)據(jù)庫連接。
有兩種注冊oracle jdbc驅(qū)動程序的辦法。
1、使用java.lang.class的forname()方法
例子:class.forname(oracle.jdbc.oracledriver);
2、使用jdbc drivermanager類的registerdriver()方法。
例子:drivermanager.registerdriver(new oracle.jdbc.oracledriver());
如果使用oracle8i jdbc驅(qū)動程序,那么需要導(dǎo)入oracle.jdbc.driver.oracledriver類,
然后注冊這個類的實例。
例子:
import oracle.jdbc.driver.oracledriver;
drivermanager.registerdriver(new oracle.jdbc.oracledriver());
注意:從jdbc2.0開始,只用jdbc驅(qū)動程序的更標(biāo)準(zhǔn)辦法是通過數(shù)據(jù)源。
四、打開數(shù)據(jù)庫連接
必須先打開數(shù)據(jù)庫連接,然后才能在java程序中執(zhí)行sql語句。打開數(shù)據(jù)庫連接
的主要辦法。
1、drivermanager類的getconnection()方法。
drivermanager.getconnection(url,username,passwrod);
url:程序要連接的數(shù)據(jù)庫,以及要使用的jdbc驅(qū)動程序
url的結(jié)構(gòu)依賴于jdbc驅(qū)動程序的生產(chǎn)商。對于oracle jdbc驅(qū)動程序,數(shù)據(jù)庫url的結(jié)構(gòu):
driver_name是程序使用的oracle jdbc驅(qū)動程序的名稱。如:
jdbc:oracle:thin oracle jdbc thin驅(qū)動程序
jdbc:oracle:oci oracle jdbc oci驅(qū)動程序
jdbc:oracle:oci8 oracle jdbc oci驅(qū)動程序
driver_information是連接數(shù)據(jù)庫所需的驅(qū)動程序特有的信息。這依賴于使用的驅(qū)動程序。
對于oracle jdbc thin驅(qū)動程序,可以用
host_name:port:database_sid 或者 oracle net關(guān)鍵字-值對
(description=(address=(host=host_name)(protocol=tcp)(port=port()
(connect_data=(sid=database_sid)))
host_name: 運行數(shù)據(jù)庫的機器的名稱
port: net數(shù)據(jù)庫監(jiān)聽器等待這個端口上的請求,默認(rèn)是1521
database_sid: 要連接的數(shù)據(jù)庫實例的oracle sid。
username: 程序連接數(shù)據(jù)庫時使用的數(shù)據(jù)庫用戶名
passwrod: 用戶名的口令
例子:
connection myconnection=drivermanager.getconnection(
jdbc:oracle:thin:@localhost:1521:orcl,
store_user,
store_password);
connection myconnection=drivermanager.getconnection(
jdbc:oracle:oci:@(description=(address=(host=localhost)
(protocol=tcp)(port=1521))(connect_data=(sid=orcl))),
store_user,
store_password);
2、使用oracle數(shù)據(jù)源對象,必須先創(chuàng)建這個對象,然后連接它。使用這種方法
采用了一種設(shè)置數(shù)據(jù)庫連接信息的標(biāo)準(zhǔn)化方式,oracle數(shù)據(jù)源對象可以與
java naming and directory interface(java名字與目錄接口,jndi)一起使用。