版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第11章
利用JDBC進(jìn)行Oracle訪問(wèn)
11.1概述
11.2OracleJDBC驅(qū)動(dòng)程序
11.3OracleJDBC的使用
11.4實(shí)例
11.5小結(jié)
習(xí)題十一
上機(jī)實(shí)驗(yàn)十一
11.1概
述
對(duì)ODBCAPI面向?qū)ο蟮姆庋b和重新設(shè)計(jì)使JDBC(JavaDataBaceConnectivity)易于學(xué)習(xí)和使用,而且利用JDBC能夠編寫(xiě)不依賴于廠商的代碼,用以查詢和操縱數(shù)據(jù)庫(kù)。與所有JavaAPI一樣,它是面向?qū)ο蟮?,但并不是很高?jí)別的對(duì)象集。JDBC可以訪問(wèn)包括Oracle在內(nèi)的各種不同數(shù)據(jù)庫(kù),但Oracle數(shù)據(jù)庫(kù)包含許多獨(dú)特的性質(zhì),只能通過(guò)使用標(biāo)準(zhǔn)JDBC的Oracle擴(kuò)展來(lái)使用。Oracle擴(kuò)展可盡可能地發(fā)揮JDBC的能力。
11.2OracleJDBC驅(qū)動(dòng)程序
OracleJDBC驅(qū)動(dòng)程序使Java程序中的JDBC語(yǔ)句可以訪問(wèn)Oracle數(shù)據(jù)庫(kù)。OracleJDBC驅(qū)動(dòng)程序有以下四種。
1.Thin驅(qū)動(dòng)程序
Thin驅(qū)動(dòng)程序?qū)Y源消耗最小,完全由Java編寫(xiě)。它可以在獨(dú)立的Java應(yīng)用程序(包括JavaApplet)中使用,并且可以訪問(wèn)所有版本的Oracle數(shù)據(jù)庫(kù)。
2.OCI驅(qū)動(dòng)程序
OCI驅(qū)動(dòng)程序比Thin驅(qū)動(dòng)程序占用資源多,但性能好一點(diǎn)。它適合于部署在中間層的軟件,如Web服務(wù)器。OCI驅(qū)動(dòng)程序是第二類驅(qū)動(dòng)程序,不完全是用Java編寫(xiě)的,還包含用C寫(xiě)的代碼。
3.服務(wù)器端內(nèi)部驅(qū)動(dòng)程序
服務(wù)器端內(nèi)部驅(qū)動(dòng)程序提供對(duì)數(shù)據(jù)庫(kù)的直接訪問(wèn),OracleJVM使用它與數(shù)據(jù)庫(kù)進(jìn)行通信。OracleJVM是與數(shù)據(jù)庫(kù)集成的虛擬機(jī),可以使用OracleJVM將Java類裝載進(jìn)數(shù)據(jù)庫(kù),然后公布和運(yùn)行這個(gè)類中包含的方法。
4.服務(wù)器端Thin驅(qū)動(dòng)程序
服務(wù)器端Thin驅(qū)動(dòng)程序也是由OracleJVM使用的,它提供對(duì)遠(yuǎn)程數(shù)據(jù)庫(kù)的訪問(wèn)。與Thin驅(qū)動(dòng)程序一樣,這種驅(qū)動(dòng)程序也完全使用Java編寫(xiě)。
11.3OracleJDBC的使用
11.3.1導(dǎo)入JDBC包
要能使用JDBC,必須將所需的JDBC包導(dǎo)入Java程序。
importjava.sql.*;11.3.2注冊(cè)JDBC驅(qū)動(dòng)程序
有兩種注冊(cè)O(shè)racleJDBC驅(qū)動(dòng)程序的方法。第一種使用Class.forName("oracle.jdbc.
OracleDriver");第二種方法使用DriverManager。DriverManager類是
JDBC的管理層,作用于用戶和驅(qū)動(dòng)程序之間。它跟蹤可用的驅(qū)動(dòng)程序,并在數(shù)據(jù)庫(kù)和相應(yīng)驅(qū)動(dòng)程序之間建立連接。另外,DriverManager類也處理諸如驅(qū)動(dòng)程序登錄時(shí)間限制及登錄和跟蹤消息的顯示等事務(wù)。
DriverManager.registerDriver(neworacle.jdbc.OracleDriver());如果使用OracleJDBC驅(qū)動(dòng)程序,則需要導(dǎo)入oracle.jdbc.driver.OracleDriver類,然后注冊(cè)這個(gè)類的實(shí)例。
Importoracle.jdbc.driver.OracleDriver;
DriverManager.registerDriver(neworacle.jdbc.driver.OracleDriver());
11.3.3打開(kāi)數(shù)據(jù)流
加載
Driver類并在
DriverManager類中注冊(cè)后,即可與數(shù)據(jù)庫(kù)建立連接。
與數(shù)據(jù)庫(kù)建立連接的標(biāo)準(zhǔn)方法是調(diào)用DriverManager.getConnection。該方法接受含有某個(gè)
URL的字符串。DriverManager類(即所謂的
JDBC管理層)將嘗試找到可與那個(gè)
URL所代表的數(shù)據(jù)庫(kù)進(jìn)行連接的驅(qū)動(dòng)程序。DriverManager類存有已注冊(cè)的
Driver類的清單。當(dāng)調(diào)用方法
getConnection時(shí),它將檢查清單中的每個(gè)驅(qū)動(dòng)程序,直到找到可與URL中指定的數(shù)據(jù)庫(kù)進(jìn)行連接的驅(qū)動(dòng)程序?yàn)橹埂river的方法connect使用這個(gè)
URL來(lái)建立實(shí)際的連接。
DriverManager.getConnection(URL,username,password);
JDBCURL提供了一種標(biāo)識(shí)數(shù)據(jù)庫(kù)的方法,可以使相應(yīng)的驅(qū)動(dòng)程序識(shí)別該數(shù)據(jù)庫(kù)并與之建立連接。實(shí)際上,驅(qū)動(dòng)程序編程員決定用什么JDBCURL來(lái)標(biāo)識(shí)特定的驅(qū)動(dòng)程序。用戶不必關(guān)心如何形成JDBCURL,他們只需使用與所用驅(qū)動(dòng)程序一起提供的URL即可。JDBC的作用是提供某些約定,驅(qū)動(dòng)程序編程員在構(gòu)造JDBCURL時(shí)應(yīng)該遵循這些約定。JDBCURL的標(biāo)準(zhǔn)語(yǔ)法如下所示,它由三部分組成,各部分間用冒號(hào)分隔。
Jdbc:<子協(xié)議>:<子名稱>
JDBCURL的三個(gè)部分可分解如下:
jdbc為協(xié)議,JDBCURL中的協(xié)議總是jdbc;子協(xié)議為即將使用的驅(qū)動(dòng)程序;子名稱是Oracle數(shù)據(jù)庫(kù)服務(wù)名。
username表示程序連接數(shù)據(jù)庫(kù)時(shí)使用的數(shù)據(jù)庫(kù)用戶名。
password表示用戶名口令。
以下例子使用getConnection()方法連接數(shù)據(jù)庫(kù)。
Connectioncon=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL","scott","tiger");
這個(gè)例子使用的是OracleJDBCThin驅(qū)動(dòng)程序。
11.3.4執(zhí)行SQL語(yǔ)句
Statement對(duì)象用于將
SQL語(yǔ)句發(fā)送給數(shù)據(jù)庫(kù)。Statement對(duì)象有三種:Statement、PreparedStatement(從
Statement繼承而來(lái))和
CallableStatement(從
PreparedStatement繼承而來(lái)),它們是給定連接上執(zhí)行SQL語(yǔ)句的包容器,它們都專用于發(fā)送特定類型的SQL
語(yǔ)句。
Statement對(duì)象用于執(zhí)行不帶參數(shù)的簡(jiǎn)單
SQL語(yǔ)句;PreparedStatement對(duì)象用于執(zhí)行帶或不帶
IN參數(shù)的預(yù)編譯
SQL語(yǔ)句;CallableStatement對(duì)象用于執(zhí)行對(duì)數(shù)據(jù)庫(kù)已存儲(chǔ)過(guò)程的調(diào)用。
1.創(chuàng)建
Statement對(duì)象
建立了到特定數(shù)據(jù)庫(kù)的連接之后,就可用該連接發(fā)送
SQL語(yǔ)句。Statement對(duì)象用
Connection的方法
createStatement創(chuàng)建,如下列代碼段所示:
Statementstmt=con.createStatement();
為了執(zhí)行
Statement對(duì)象,被發(fā)送到數(shù)據(jù)庫(kù)的
SQL語(yǔ)句將被作為參數(shù)提供給
Statement。
2.使用
Statement對(duì)象執(zhí)行語(yǔ)句
Statement接口提供了三種執(zhí)行
SQL語(yǔ)句的方法:executeQuery、executeUpdate和
execute。使用哪一種方法由
SQL語(yǔ)句所產(chǎn)生的內(nèi)容決定。方法
executeQuery用于產(chǎn)生單個(gè)結(jié)果集的語(yǔ)句,例如:
ResultSetrs=stmt.executeQuery("SELECTa,b,cFROMTable2");方法executeUpdate用于執(zhí)行INSERT、UPDATE或DELETE語(yǔ)句以及SQLDDL(數(shù)據(jù)定義語(yǔ)言)語(yǔ)句,例如CREATETABLE和DROPTABLE。INSERT、UPDATE或DELETE語(yǔ)句的效果是修改表中零行或多行中的一列或多列。executeUpdate的返回值是一個(gè)整數(shù),指示受影響的行數(shù)(即更新計(jì)數(shù))。對(duì)于CREATETABLE或DROPTABLE等不操作行的語(yǔ)句,executeUpdate的返回值總為零。
intline=stmt.executeUpdate("insertintouserinfovalues('juliet','juliet')");
如果預(yù)先不知道要執(zhí)行的SQL語(yǔ)句類型,則可使用方法execute,用于執(zhí)行返回多個(gè)結(jié)果集、多個(gè)更新計(jì)數(shù)或二者組合的語(yǔ)句。
3.關(guān)閉
Statement對(duì)象
Statement對(duì)象由
Java垃圾收集程序自動(dòng)關(guān)閉。作為一種好的編程風(fēng)格,應(yīng)在不需要
Statement對(duì)象時(shí)顯式地關(guān)閉它們。這將立即釋放
DBMS資源,有助于避免潛在的內(nèi)存問(wèn)題。語(yǔ)句如下:
stmt.close();11.3.5獲得查詢結(jié)果集
ResultSet包含符合
SQL語(yǔ)句中條件的所有行,并且通過(guò)一套
get方法(這些
get方法可以訪問(wèn)當(dāng)前行中的不同列)提供了對(duì)這些行中數(shù)據(jù)的訪問(wèn)。ResultSet.next方法用于移動(dòng)到
ResultSet中的下一行,使下一行成為當(dāng)前行。結(jié)果集一般是一個(gè)表,其中有查詢所返回的列標(biāo)題及相應(yīng)的值。
ResultSet維護(hù)指向其當(dāng)前數(shù)據(jù)行的光標(biāo)。每調(diào)用一次
next方法,光標(biāo)向下移動(dòng)一行。最初它位于第一行之前,因此第一次調(diào)用next時(shí)應(yīng)把光標(biāo)置于第一行上,使它成為當(dāng)前行。隨著每次調(diào)用next將導(dǎo)致光標(biāo)向下移動(dòng)一行,可按照從上至下的次序獲取ResultSet行。在
ResultSet對(duì)象或其父輩
Statement對(duì)象關(guān)閉之前,光標(biāo)一直保持有效。使用方法如下:
ResultSetrs=stmt.executeQuery("select語(yǔ)句");
while(xt())
{
數(shù)據(jù)類型
variable_name=rs.get××(字段腳標(biāo)或字段名);
}11.3.6關(guān)閉數(shù)據(jù)流
關(guān)閉數(shù)據(jù)流連接可采用Connection對(duì)象的close方法。即時(shí)關(guān)閉數(shù)據(jù)流可以減少內(nèi)存占用,關(guān)閉數(shù)據(jù)流的語(yǔ)句如下:
con.close();
11.3.7在JDBC中調(diào)用存儲(chǔ)過(guò)程
CallableStatement對(duì)象為所有的
DBMS提供了一種以標(biāo)準(zhǔn)形式調(diào)用存儲(chǔ)過(guò)程的方法。有兩種調(diào)用形式:一種帶結(jié)果參數(shù),另一種不帶結(jié)果參數(shù)。
在JDBC中,調(diào)用存儲(chǔ)過(guò)程的語(yǔ)法如下所示。注意,方括號(hào)表示其間的內(nèi)容是可選項(xiàng),方括號(hào)本身并非語(yǔ)法的組成部分。
{call過(guò)程名[(?,?,...)]}
返回結(jié)果參數(shù)的存儲(chǔ)過(guò)程的語(yǔ)法如下:
{?=call過(guò)程名[(?,?,...)]}
不帶參數(shù)的存儲(chǔ)過(guò)程的語(yǔ)法如下:
{call過(guò)程名}
1.創(chuàng)建
CallableStatement對(duì)象
CallableStatement對(duì)象是用Connection方法prepareCall創(chuàng)建的。下面為創(chuàng)建
CallableStatement的實(shí)例,其中含有對(duì)存儲(chǔ)過(guò)程getEMPData調(diào)用。該過(guò)程有兩個(gè)變量,但不含結(jié)果參數(shù)。
CallableStatementcstmt=con.prepareCall("{callgetEMPData(?,?)}");
其中,?占位符為IN、OUT還是INOUT參數(shù)取決于存儲(chǔ)過(guò)程getEMPData。
2.IN和OUT參數(shù)
將IN參數(shù)傳給CallableStatement對(duì)象是通過(guò)setXXX方法來(lái)完成的。所傳入?yún)?shù)的類型決定了所用的setXXX方法(例如,用setFloat來(lái)傳入float值等)。
如果存儲(chǔ)過(guò)程返回OUT參數(shù),則在執(zhí)行CallableStatement對(duì)象以前先注冊(cè)每個(gè)OUT參數(shù)的JDBC類型,使用registerOutParameter方法來(lái)注冊(cè)。語(yǔ)句執(zhí)行完后,CallableStatement的getXXX方法將取回參數(shù)值。registerOutParameter使用的是JDBC類型(因此它與數(shù)據(jù)庫(kù)返回的JDBC類型匹配),而getXXX將之轉(zhuǎn)換為Java類型。
下面的例子先注冊(cè)O(shè)UT參數(shù),執(zhí)行由cstmt所調(diào)用的存儲(chǔ)過(guò)程,然后檢索在OUT參數(shù)中返回的值。方法setDouble給第一個(gè)IN參數(shù)傳入值,方法
getInt從第二個(gè)
OUT參數(shù)中取出一個(gè)整數(shù)。
CallableStatementcstmt=con.prepareCall("{callgetEMPData(?,?)}");
cstmt.setDouble(1,5000.0);
cstmt.registerOutParameter(2,java.sql.Types.INTEGER);
cstmt.execute();
intx=cstmt.getInt(2);
3.INOUT參數(shù)
既支持輸入又接受輸出的參數(shù)(INOUT參數(shù))不僅要調(diào)用registerOutParameter方法,還要調(diào)用合適的setXXX方法。setXXX方法將參數(shù)設(shè)置為輸入?yún)?shù),registerOutParameter方法將它的JDBC類型注冊(cè)為輸出參數(shù)。應(yīng)該引起注意的是,IN值的JDBC類型和提供給registerOutParameter方法的JDBC類型必須相同。
檢索輸出值時(shí),應(yīng)使用對(duì)應(yīng)的getXXX方法。例如,Java類型為int的參數(shù)應(yīng)該使用方法
setInt來(lái)賦輸入值;應(yīng)該給registerOutParameter提供類型為INTEGER的
JDBC類型。
下例演示了一個(gè)存儲(chǔ)過(guò)程compute,其唯一參數(shù)是INOUT。方法setInt把此參數(shù)設(shè)為25,驅(qū)動(dòng)程序?qū)⑺鳛镴DBCINTERGER類型送到數(shù)據(jù)庫(kù)中。然后,registerOutParameter將該參數(shù)注冊(cè)為JDBCINTEGER。執(zhí)行完該存儲(chǔ)過(guò)程后,將返回一個(gè)新的JDBCTINYINT值。方法getInt將把這個(gè)新值作為JavaInt類型檢索。
CallableStatementcstmt=con.prepareCall("{callcompute(?)}");
cstmt.setInt(1,25);
cstmt.registerOutParameter(1,java.sql.Types.INTEGER);
cstmt.executeUpdate();
intx=cstmt.getInt(1);
11.3.8處理SQL異常
當(dāng)數(shù)據(jù)庫(kù)或JDBC驅(qū)動(dòng)程序發(fā)生錯(cuò)誤時(shí),將拋出一個(gè)java.sql.SQLException。java.sql.SQLException類是java.sql.Exception類的子類。因此,所有的JDBC語(yǔ)句最好放在一個(gè)try/catch語(yǔ)句塊中,否則代碼就要拋出java.sql.SQLException。如果出現(xiàn)這種情況,則JVM還要試圖尋找合適的處理器來(lái)處理這個(gè)異常。如果沒(méi)有找到合適的,則使用默認(rèn)的異常處理器來(lái)處理該異常。使用catch子句后,每當(dāng)出現(xiàn)異常時(shí),JVM會(huì)將控制轉(zhuǎn)移到運(yùn)行這個(gè)catch子句的代碼。在此代碼中,可以顯示錯(cuò)誤編碼和錯(cuò)誤消息,這有助于判斷錯(cuò)誤原因。
java.sql.SQLException類定義了四個(gè)方法,可以幫助查找并判斷出錯(cuò)原因。
(1)getErrorCode():對(duì)于數(shù)據(jù)庫(kù)和JDBC驅(qū)動(dòng)程序中發(fā)生的錯(cuò)誤,此方法返回oracle的錯(cuò)誤編碼(一個(gè)5位的數(shù)字)。
(2)getMessage():對(duì)于數(shù)據(jù)庫(kù)中發(fā)生的錯(cuò)誤,此方法返回錯(cuò)誤消息以及5位的錯(cuò)誤編碼;對(duì)于JDBC驅(qū)動(dòng)程序錯(cuò)誤,此方法只返回錯(cuò)誤消息。
(3)?getSQLState():
對(duì)于數(shù)據(jù)庫(kù)中發(fā)生的錯(cuò)誤,此方法返回5位錯(cuò)誤編碼和SQL的狀態(tài);對(duì)于JDBC驅(qū)動(dòng)程序錯(cuò)誤,此方法不返回任何有意義的內(nèi)容。
(4)printStackTrace():此方法顯示發(fā)生異常時(shí)的堆棧內(nèi)容。下面的例子將演示以上方法的使用。
try{}
catch(SQLExceptione)
{
e.printStackTrace();
System.out.println(e.getMessage());
System.out.println(e.getErrorCode());
System.out.println(e.getSQLState());
}
11.4實(shí)
例
1.實(shí)例一
在scott用戶模式下,添加一條記錄到EMP表,然后顯示10號(hào)部門(mén)的所有員工姓名。
提示:在eclipse編程環(huán)境下,需導(dǎo)入classes111.jar。
importjava.sql.*;
publicclassSimpleSQLExample{
publicstaticvoidmain(Stringargs[])
{
try{
//DriverManager.registerDriver(neworacle.jdbc.driver.OracleDriver());Class.forName(“oracle.jdbc.OracleDriver”);//兩種方式都可以
Connectioncon=DriverManager.getConnection("jdbc:oracle:thin:@localhost:
1521:ora9","scott","tiger");
Statementstmt=con.createStatement();
stmt.execute("insertintoemp(empno,ename,deptno,sal)values(8002,'atlas',10,5000)");
ResultSetrs=stmt.executeQuery("selectenamefromempwheredeptno=10");
while(rs.next())
{
Stringename=rs.getString(1);
System.out.println(ename);
}
stmt.close();
con.close();
}
catch(Exceptione)
{
System.out.print(e.toString());
}
}
}圖11-1簡(jiǎn)單SQL語(yǔ)句程序
CLARK
KING
MILLER
atlas
2.實(shí)例2
創(chuàng)建一個(gè)給特定員工增加10%薪水的存儲(chǔ)過(guò)程,并返回最新的薪水值。使用JDBC調(diào)用該存儲(chǔ)過(guò)程,打印返回值。
存儲(chǔ)過(guò)程代碼如下:
createorreplaceprocedureraisesal(emp_nonumber,sal_varoutnumber)
as
begin
updateempsetsal=sal*1.1whereempno=emp_no;
selectsalintosal_varfromempwhereempno=emp_no;
end;
/給實(shí)例1中的8002號(hào)薪水為5000的員工漲工資,程序代碼如下:
importjava.sql.*;
publicclasscallprocExample{
publicstaticvoidmain(Stringargs[])
{
try{
//DriverManager.registerDriver(neworacle.jdbc.driver.OracleDriver());
Class.forName("oracle.jdbc.OracleDriver");
Connectioncon=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:
ORa9","scott","tiger");
CallableStatementcstmt=con.prepareCall("{callraisesal(?,?)}");
cstmt.setInt(1,8002);
cstmt.registerOutParameter(2,Types.FLOAT);
cstmt.execute();
floatsal_var=cstmt.getFloat(2);
System.out.print(sal_var);
cstmt.close();
con.close();
}
catch(Exceptione)
{
System.out.print(e.toString());
}
}
}圖11-2調(diào)用存儲(chǔ)過(guò)程的程序
11.5小
結(jié)
JDBC是一個(gè)軟件層,允許開(kāi)發(fā)者在Java中編寫(xiě)客戶端/服務(wù)器程序,它提供了簡(jiǎn)單的接口,用于執(zhí)行原始的SQL語(yǔ)句。Oracle支持簡(jiǎn)單的JDBC訪問(wèn)和開(kāi)發(fā),提供了很多圖形化的應(yīng)用程序來(lái)支持和開(kāi)發(fā)Java程序,如ContainerforJ2EE和Jdeveloper,它涵蓋了性能調(diào)整、開(kāi)發(fā)J2EE組件和Java存儲(chǔ)過(guò)程等技術(shù)。
習(xí)題十一
一、選擇題
1.JDBC的組件是()、()和()。
2.使用()類調(diào)用存儲(chǔ)過(guò)程。
3.executeQuery的返回類型是()。
A.Result B.ResultSet
C.ResultsetD.以上選項(xiàng)都不正確
4.create命令是用()命令執(zhí)行的。
A.executeQueryB.execute
C.?executeUpdate D.?executeCreate二、編程題
1.編寫(xiě)一個(gè)程序,用于創(chuàng)建一個(gè)具有以下列的student表:
stu_idnumber(5)
stu_namevarchar2(20)
agenumber(3)
2.編寫(xiě)一個(gè)程序,往student表里插入三條數(shù)據(jù)。
3.編寫(xiě)程序,檢索student表中的數(shù)據(jù),并按行打印所有的記錄信息。
上機(jī)實(shí)驗(yàn)十一
實(shí)驗(yàn)1創(chuàng)建一段Web程序,用Oracle數(shù)據(jù)源來(lái)檢索并顯示student表中的同學(xué)信息
目的和要求:
1.掌握J(rèn)DBC類。
2.掌握連接訪問(wèn)關(guān)閉數(shù)據(jù)流。
3.掌握傳送簡(jiǎn)單的查詢語(yǔ)句。
實(shí)驗(yàn)內(nèi)容:
importjava.sql.*;
publicclassLab1{
publicstaticvoidmain(Stringargs[])
{
try{
//DriverManager.registerDriver(neworacle.jdbc.driver.OracleDriver());
Class.forName("oracle.jdbc.OracleDriver");//兩種方式都可以
Connectioncon=DriverManager.getConnection
("jdbc:oracle:thin:@localhost:1521:ora9","scott","tiger");
Statementstmt=con.createStatement();
ResultSetrs=stmt.executeQuery("select*fromstudent");
while(rs.next())
{
System.out.println(rs.getInt(1)
+rs.getString(2)+rs.getInt(3));
}
stmt.close();
con.close();
}
catch(Exceptione)
{
System.out.print(e.toString());
}
}
}實(shí)驗(yàn)2創(chuàng)建一段Web程序,在EMP中添加一個(gè)新雇員,要求用SQL語(yǔ)句傳遞參數(shù)
目的和要求:
1.掌握J(rèn)DBC類。
2.掌握連接訪問(wèn)關(guān)閉數(shù)據(jù)流。
3.掌握傳送預(yù)定義語(yǔ)句。
實(shí)驗(yàn)內(nèi)容:
importjava.sql.*;
publicclassLab2{
publicstaticvoidmain(Stringargs[])
{
try{
//DriverManager.registerDriver(neworacle.jdbc.driver.OracleDriver());
Class.forName("oracle.jdbc.OracleDriver");//兩種方式都可以
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 賓館餐飲部炊事人員招聘協(xié)議
- 鐵路給水設(shè)施改造施工協(xié)議
- 消防隊(duì)電工設(shè)施保障招聘合同
- 學(xué)校衛(wèi)生維護(hù)合同
- 商場(chǎng)噴淋管道施工協(xié)議
- 住宅小區(qū)散水施工合同
- 企業(yè)信息安全風(fēng)險(xiǎn)管理協(xié)議
- 高校交通運(yùn)輸采購(gòu)合同規(guī)范
- 主題公園花園施工合同樣本
- 分配利潤(rùn)合同范例
- 《中國(guó)喪葬禮儀》課件
- 華為ICT大賽(網(wǎng)絡(luò)賽道)高頻備考試題及答案
- 2024年1月福建高中學(xué)業(yè)水平合格考物理試卷真題(含答案解析)
- 中國(guó)高血壓防治指南(2024年修訂版)解讀課件
- 國(guó)家開(kāi)放大學(xué)《統(tǒng)計(jì)與數(shù)據(jù)分析基礎(chǔ)》形考任務(wù)1-5答案
- 專項(xiàng)15-分式方程的應(yīng)用-八大題型
- 北京市海淀區(qū)2023-2024學(xué)年五年級(jí)上學(xué)期數(shù)學(xué)期末試卷
- 2024時(shí)事政治考試題庫(kù)(100題)
- 核反應(yīng)堆熱工分析課程設(shè)計(jì)
- 【新教材】統(tǒng)編版(2024)七年級(jí)上冊(cè)語(yǔ)文期末復(fù)習(xí)課件129張
評(píng)論
0/150
提交評(píng)論