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