java連接數(shù)據(jù)庫(kù)大全_第1頁(yè)
java連接數(shù)據(jù)庫(kù)大全_第2頁(yè)
java連接數(shù)據(jù)庫(kù)大全_第3頁(yè)
java連接數(shù)據(jù)庫(kù)大全_第4頁(yè)
java連接數(shù)據(jù)庫(kù)大全_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、javajava 連接數(shù)據(jù)庫(kù)大全連接數(shù)據(jù)庫(kù)大全 Java 數(shù)據(jù)庫(kù)連接(JDBC)由一組用 Java 編程語(yǔ)言編寫的類和接口組成。JDBC 為工具/數(shù)據(jù)庫(kù)開(kāi)發(fā)人員提供了一個(gè)標(biāo)準(zhǔn)的 API,使他們能夠用純 Java API 來(lái)編寫數(shù)據(jù)庫(kù)應(yīng)用程序。然而各個(gè)開(kāi)發(fā)商的接口并不完全相同,所以開(kāi)發(fā)環(huán)境的變化會(huì)帶來(lái)一定的配置變化。本文主要集合了不同數(shù)據(jù)庫(kù)的連接方式。 一、連接各種數(shù)據(jù)庫(kù)方式速查表 下面羅列了各種數(shù)據(jù)庫(kù)使用 JDBC 連接的方式,可以作為一個(gè)手冊(cè)使用。 . W( |& . Y 1 ; : r 1、Oracle8/8i/9i 數(shù)據(jù)庫(kù)(thin 模式) ) l5 I % J 8 p. ? 2

2、 p$ D8 G+ d String url=jdbcracle:thinlocalhost:1521rcl; /orcl 為數(shù)據(jù)庫(kù)的 SID String user=test; + o! 6 0 N1 + 0 - b1 D String password=test; Connection conn= DriverManager.getConnection(url,user,password); , v$ o4 t X+ l4 K J9 S 2、DB2 數(shù)據(jù)庫(kù) % - g) l - N- m $ j$ R String url=jdbc:db2:/localhost:5000/sample;

3、/sample 為你的數(shù)據(jù)庫(kù)名 String user=admin; * h6 o+ V: G) r 5 b3 # U M 5 G 1 String password=; Connection conn= DriverManager.getConnection(url,user,password); 3、Sql Server7.0/2000 數(shù)據(jù)庫(kù) + K 4 Q 2 F) n8 h9 Y $ R 7 W String url=jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=mydb; /mydb 為數(shù)據(jù)庫(kù) - w 7 n, p4 A

4、: Q/ o6 j 2 P 6 R String user=sa; 0 N 2 i 0 B& B 1 String password=; 0 l. T 0 9 L) U Connection conn= DriverManager.getConnection(url,user,password); 4、Sybase 數(shù)據(jù)庫(kù) 8 x- E , ) k4 g$ Q: | String url = jdbc:sybase:Tds:localhost:5007/myDB;/myDB 為你的數(shù)據(jù)庫(kù)名 + * b4 _; A- $ d Properties sysProps = System.ge

5、tProperties(); SysProps.put(user,userid); SysProps.put(password,user_password); Connection conn= DriverManager.getConnection(url, SysProps); 1 n8 h3 h: E: A: 5、Informix 數(shù)據(jù)庫(kù) % r/ Q A# V 2 u8 z% y0 _1 T! - * X $ C7 K. e ; q6 S f* | s String url = user=testuser;password=testpassword; /myDB 為數(shù)據(jù)庫(kù)名 / j I,

6、 f. C 3 g Connection conn= DriverManager.getConnection(url); 6、MySQL 數(shù)據(jù)庫(kù) ; E * T 5 7 Q- y J L V w $ L 7 e + + b K! G: U3 B 4 N ! String url =jdbc:mysql:/localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1 /myDB 為數(shù)據(jù)庫(kù)名 , : Q 2 M4 x3 Z2 Z 2 s; g Connection co

7、nn= DriverManager.getConnection(url); * a0 % F Z) 6 L2 I 7、PostgreSQL 數(shù)據(jù)庫(kù) 0 n( C& v( R , r 1 / A& 6 7 Z 8 s 5 J String url =jdbc:postgresql:/localhost/myDB /myDB 為數(shù)據(jù)庫(kù)名 I( N8 _: Q s) R z String user=myuser; String password=mypassword; Connection conn= DriverManager.getConnection(url,user,pass

8、word); / i 0 E- C $ W 2 % f3 w+ l( a % / . _# J X9 w q8 R& Z 8、access 數(shù)據(jù)庫(kù)直連用 ODBC 的 5 X # 7 v7 k, | 3 X 9 U z; r5 E String url=jdbcdbcriver=MicroSoft Access Driver (*.mdb);DBQ=+application.getRealPath(/Data/ReportDemo.mdb);* H) m 4 D/ |* H) _ Connection conn = DriverManager.getConnection(url,);)

9、 S Z; D 1 ? 2 | Statement stmtNew=conn.createStatement() ; $ Z a8 e l+ M 0 D 1 C8 B 二、JDBC 連接 MySql 方式 下面是使用 JDBC 連接 MySql 的一個(gè)小的教程 / r2 z8 g) U9 K6 b7 u Z 8 1、查找驅(qū)動(dòng)程序 / T 9 K& h E 7 w 0 / w9 Y 1 N 0 F * R 2、動(dòng)態(tài)指定 classpath3 R 5 Z $ M % s L $ f # P: I 如果需要執(zhí)行時(shí)動(dòng)態(tài)指定 classpath,就在執(zhí)行時(shí)采用cp 方式。否則將上面的.jar文件

10、加入到 classpath 環(huán)境變量中。$ I, i 0 c $ S . A 2 h, e2 m 6 v , F 3 T& R. f. |- U 6 R 3、加載驅(qū)動(dòng)程序 # E/ : v# z 1 U 4 K try0 a 7 T- p1 K 4 U+ J1 A 2 q , + T 4 L * O + o1 | i 3 Ocatch(Exception e) e.printStackTrace(); A 0 D + L 7 C- H 5 A 7 I+ 7 g1 M $ S * U! | 9 g; G, A o! G W 8 G 2 l6 d5 b 4、設(shè)置連接的 url jdbc:m

11、ysql:/localhost/databasename?pa=vapa=va 三、以下列出了在使用 JDBC 來(lái)連接 Oracle 數(shù)據(jù)庫(kù)時(shí)可以使用的一些技巧,這些技巧能夠使我們更好地發(fā)揮系統(tǒng)的性能和實(shí)現(xiàn)更多的功能(系轉(zhuǎn)載) 。% D4 C 2 h# k# K + , Z # P 4 F4 | 4 H. X. f/ i 4 w 1、在客戶端軟件開(kāi)發(fā)中使用 Thin 驅(qū)動(dòng)程序 I- w: S + W8 f/ L9 | # * l; g 在開(kāi)發(fā) Java 軟件方面,Oracle 的數(shù)據(jù)庫(kù)提供了四種類型的驅(qū)動(dòng)程序,二種用于應(yīng)用軟件、applets、servlets 等客戶端軟件,另外二種用于數(shù)據(jù)庫(kù)

12、中的 Java 存儲(chǔ)過(guò)程等服務(wù)器端軟件。在客戶機(jī)端軟件的開(kāi)發(fā)中,我們可以選擇 OCI 驅(qū)動(dòng)程序或 Thin驅(qū)動(dòng)程序。OCI 驅(qū)動(dòng)程序利用 Java 本地化接口(JNI) ,通過(guò) Oracle 客戶端軟件與數(shù)據(jù)庫(kù)進(jìn)行通訊。Thin 驅(qū)動(dòng)程序是純 Java 驅(qū)動(dòng)程序,它直接與數(shù)據(jù)庫(kù)進(jìn)行通訊。為了獲得最高的性能,Oracle 建議在客戶端軟件的開(kāi)發(fā)中使用 OCI 驅(qū)動(dòng)程序,這似乎是正確的。 但我建議使用 Thin 驅(qū)動(dòng)程序, 因?yàn)橥ㄟ^(guò)多次測(cè)試發(fā)現(xiàn), 在通常情況下, Thin驅(qū)動(dòng)程序的性能都超過(guò)了 OCI 驅(qū)動(dòng)程序。 U 4 / W: h- M % J 2、關(guān)閉自動(dòng)提交功能,提高系統(tǒng)性能( z/ q0

13、 X 3 r9 Z: 7 L. p # 4 o Z& u 7 y 在第一次建立與數(shù)據(jù)庫(kù)的連接時(shí),在缺省情況下,連接是在自動(dòng)提交模式下的。為了獲得更好的性能,可以通過(guò)調(diào)用帶布爾值 false 參數(shù)的 Connection 類的setAutoCommit()方法關(guān)閉自動(dòng)提交功能,如下所示: * _8 r: x9 M6 a, v conn.setAutoCommit(false);! Z9 X( R , B 6 B b - $ | $ S! P 9 & z 5 l 值得注意的是,一旦關(guān)閉了自動(dòng)提交功能,我們就需要通過(guò)調(diào)用 Connection 類的 commit()和 rollbac

14、k()方法來(lái)人工的方式對(duì)事務(wù)進(jìn)行管理。 3、在動(dòng)態(tài) SQL 或有時(shí)間限制的命令中使用 Statement 對(duì)象* s M 6 k& ? U, J 9 C# N 5 H 9 ) ?& 1 ?6 v8 D 7 N 0 G 5 W 在執(zhí)行 SQL 命令時(shí),我們有二種選擇:可以使用 PreparedStatement 對(duì)象,也可以使用 Statement 對(duì)象。無(wú)論多少次地使用同一個(gè) SQL 命令,PreparedStatement 都只對(duì)它解析和編譯一次。當(dāng)使用 Statement 對(duì)象時(shí),每次執(zhí)行一個(gè) SQL 命令時(shí),都會(huì)對(duì)它進(jìn)行解析和編譯。這可能會(huì)使你認(rèn)為,使用 Prepared

15、Statement 對(duì)象比使用Statement 對(duì)象的速度更快。然而,我進(jìn)行的測(cè)試表明,在客戶端軟件中,情況并非如此。因此,在有時(shí)間限制的 SQL 操作中,除非成批地處理 SQL 命令,我們應(yīng)當(dāng)考慮使用 Statement 對(duì)象。* j 2 # V V k7 | q0 J ) a% F * a( M % b, H . n4 m ? 1 e: U 此外,使用 Statement 對(duì)象也使得編寫動(dòng)態(tài) SQL 命令更加簡(jiǎn)單,因?yàn)槲覀兛梢詫⒆址B接在一起,建立一個(gè)有效的 SQL 命令。因此,我認(rèn)為,Statement 對(duì)象可以使動(dòng)態(tài) SQL 命令的創(chuàng)建和執(zhí)行變得更加簡(jiǎn)單。 $ _8 _ D0 Z

16、N 5 5 v9 U w) I 4、利用 helper 函數(shù)對(duì)動(dòng)態(tài) SQL 命令進(jìn)行格式化( X/ W . 3 H u g2 R5 L 5 2 O+ + d# c 在創(chuàng)建使用 Statement 對(duì)象執(zhí)行的動(dòng)態(tài) SQL 命令時(shí),我們需要處理一些格式化方面的問(wèn)題。例如,如果我們想創(chuàng)建一個(gè)將名字 OReilly 插入表中的 SQL 命令,則必須使用二個(gè)相連的“”號(hào)替換 OReilly 中的“”號(hào)。完成這些工作的最好的方法是創(chuàng)建一個(gè)完成替換操作的 helper 方法, 然后在連接字符串心服用公式表達(dá)一個(gè) SQL 命令時(shí), 使用創(chuàng)建的 helper 方法。 與此類似的是, 我們可以讓 helper 方

17、法接受一個(gè) Date型的值,然后讓它輸出基于 Oracle 的 to_date()函數(shù)的字符串表達(dá)式。( j 8 x* c& g! r G * N 7 I: ? Y 9 a q 5、利用 PreparedStatement 對(duì)象提高數(shù)據(jù)庫(kù)的總體效率 在使用PreparedStatement對(duì)象執(zhí)行SQL命令時(shí), 命令被數(shù)據(jù)庫(kù)進(jìn)行解析和編譯,然后被放到命令緩沖區(qū)。然后,每當(dāng)執(zhí)行同一個(gè) PreparedStatement 對(duì)象時(shí),它就會(huì)被再解析一次,但不會(huì)被再次編譯。在緩沖區(qū)中可以發(fā)現(xiàn)預(yù)編譯的命令,并且可以重新使用。在有大量用戶的企業(yè)級(jí)應(yīng)用軟件中,經(jīng)常會(huì)重復(fù)執(zhí)行相同的 SQL 命令,使用

18、PreparedStatement 對(duì)象帶來(lái)的編譯次數(shù)的減少能夠提高數(shù)據(jù)庫(kù)的總體性能。如果不是在客戶端創(chuàng)建、預(yù)備、執(zhí)行 PreparedStatement 任務(wù)需要的時(shí)間長(zhǎng)于 Statement任務(wù),我會(huì)建議在除動(dòng)態(tài) SQL 命令之外的所有情況下使用 PreparedStatement 對(duì)象。 7 V , e! f4 Y F % l- R 6、在成批處理重復(fù)的插入或更新操作中使用 PreparedStatement 對(duì)象9 & n- Y 9 |. o f 4 A 如果成批地處理插入和更新操作, 就能夠顯著地減少它們所需要的時(shí)間。 Oracle提供的 Statement 和 Callab

19、leStatement 并不真正地支持批處理,只有PreparedStatement 對(duì)象才真正地支持批處理。我們可以使用 addBatch()和executeBatch()方法選擇標(biāo)準(zhǔn)的 JDBC 批處理,或者通過(guò)利用 PreparedStatement 對(duì)象的setExecuteBatch()方法和標(biāo)準(zhǔn)的executeUpdate()方法選擇速度更快的Oracle專有的方法。要使用 Oracle 專有的批處理機(jī)制,可以以如下所示的方式調(diào)用setExecuteBatch():0 S $ g5 N& T! Y( l& P PreparedStatement pstmt3D nu

20、ll; try - q( g* Z $ F h3 & Z , g% F (OraclePreparedStatement) pstmt).setExecuteBatch(30);8 U 2 D 8 + |) J ; l / ?+ w3 T: q .: H! P3 D! N- x pstmt.executeUpdate();! L 8 s 7 c; y( y! T 6 t % j% w 7 Y 4 z: K! a& a 1 j 調(diào)用 setExecuteBatch()時(shí)指定的值是一個(gè)上限, 當(dāng)達(dá)到該值時(shí), 就會(huì)自動(dòng)地引發(fā)SQL 命令執(zhí)行,標(biāo)準(zhǔn)的 executeUpdate()方法

21、就會(huì)被作為批處理送到數(shù)據(jù)庫(kù)中。我們可以通過(guò)調(diào)用 PreparedStatement 類的 sendBatch()方法隨時(shí)傳輸批處理任務(wù)。+ E+ | 2 j7 Z * j , 2 ? 7、使用 Oracle locator 方法插入、更新大對(duì)象(LOB)& r- Q) H( z $ w o6 U8 H; s 5 z 4 U( y/ # % T 5 o$ e1 h Oracle 的 PreparedStatement 類不完全支持 BLOB 和 CLOB 等大對(duì)象的處理,尤其是 Thin 驅(qū)動(dòng)程序不支持利用 PreparedStatement 對(duì)象的 setObject()和setBin

22、aryStream()方法設(shè)置 BLOB 的值,也不支持利用 setCharacterStream()方法設(shè)置CLOB 的值。只有 locator 本身中的方法才能夠從數(shù)據(jù)庫(kù)中獲取 LOB 類型的值??梢允褂?PreparedStatement 對(duì)象插入或更新 LOB,但需要使用 locator 才能獲取 LOB的值。由于存在這二個(gè)問(wèn)題,因此,我建議使用 locator 的方法來(lái)插入、更新或獲取LOB 的值。. W $ e/ v3 c % W& n3 ; u6 T0 c) G i 9 e) N 6 - G 8、使用 SQL92 語(yǔ)法調(diào)用存儲(chǔ)過(guò)程. O 3 T 2 K e + + o, i 在調(diào)用存儲(chǔ)過(guò)程時(shí),我們可以使用 SQL92 或 Oracle PL/SQL,由于使用 Oracle PL/SQL 并沒(méi)有什么實(shí)際的好處, 而且會(huì)給以后維護(hù)你的應(yīng)用程序的開(kāi)發(fā)人員帶來(lái)麻煩,因此,我建議在調(diào)用存儲(chǔ)過(guò)程

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論