




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、javajava 連接數(shù)據(jù)庫大全連接數(shù)據(jù)庫大全 Java 數(shù)據(jù)庫連接(JDBC)由一組用 Java 編程語言編寫的類和接口組成。JDBC 為工具/數(shù)據(jù)庫開發(fā)人員提供了一個標(biāo)準(zhǔn)的 API,使他們能夠用純 Java API 來編寫數(shù)據(jù)庫應(yīng)用程序。然而各個開發(fā)商的接口并不完全相同,所以開發(fā)環(huán)境的變化會帶來一定的配置變化。本文主要集合了不同數(shù)據(jù)庫的連接方式。 一、連接各種數(shù)據(jù)庫方式速查表 下面羅列了各種數(shù)據(jù)庫使用 JDBC 連接的方式,可以作為一個手冊使用。 . W( |& . Y 1 ; : r 1、Oracle8/8i/9i 數(shù)據(jù)庫(thin 模式) ) l5 I % J 8 p. ? 2
2、 p$ D8 G+ d String url=jdbcracle:thinlocalhost:1521rcl; /orcl 為數(shù)據(jù)庫的 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ù)庫 % - g) l - N- m $ j$ R String url=jdbc:db2:/localhost:5000/sample;
3、/sample 為你的數(shù)據(jù)庫名 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 4 Q 2 F) n8 h9 Y $ R 7 W String url=jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=mydb; /mydb 為數(shù)據(jù)庫 - 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ù)庫 8 x- E , ) k4 g$ Q: | String url = jdbc:sybase:Tds:localhost:5007/myDB;/myDB 為你的數(shù)據(jù)庫名 + * 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ù)庫 % 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ù)庫名 / j I,
6、 f. C 3 g Connection conn= DriverManager.getConnection(url); 6、MySQL 數(shù)據(jù)庫 ; 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ù)庫名 , : 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ù)庫 0 n( C& v( R , r 1 / A& 6 7 Z 8 s 5 J String url =jdbc:postgresql:/localhost/myDB /myDB 為數(shù)據(jù)庫名 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ù)庫直連用 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 的一個小的教程 / r2 z8 g) U9 K6 b7 u Z 8 1、查找驅(qū)動程序 / T 9 K& h E 7 w 0 / w9 Y 1 N 0 F * R 2、動態(tài)指定 classpath3 R 5 Z $ M % s L $ f # P: I 如果需要執(zhí)行時動態(tài)指定 classpath,就在執(zhí)行時采用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ū)動程序 # 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 來連接 Oracle 數(shù)據(jù)庫時可以使用的一些技巧,這些技巧能夠使我們更好地發(fā)揮系統(tǒng)的性能和實現(xiàn)更多的功能(系轉(zhuǎn)載) 。% D4 C 2 h# k# K + , Z # P 4 F4 | 4 H. X. f/ i 4 w 1、在客戶端軟件開發(fā)中使用 Thin 驅(qū)動程序 I- w: S + W8 f/ L9 | # * l; g 在開發(fā) Java 軟件方面,Oracle 的數(shù)據(jù)庫提供了四種類型的驅(qū)動程序,二種用于應(yīng)用軟件、applets、servlets 等客戶端軟件,另外二種用于數(shù)據(jù)庫
12、中的 Java 存儲過程等服務(wù)器端軟件。在客戶機端軟件的開發(fā)中,我們可以選擇 OCI 驅(qū)動程序或 Thin驅(qū)動程序。OCI 驅(qū)動程序利用 Java 本地化接口(JNI) ,通過 Oracle 客戶端軟件與數(shù)據(jù)庫進行通訊。Thin 驅(qū)動程序是純 Java 驅(qū)動程序,它直接與數(shù)據(jù)庫進行通訊。為了獲得最高的性能,Oracle 建議在客戶端軟件的開發(fā)中使用 OCI 驅(qū)動程序,這似乎是正確的。 但我建議使用 Thin 驅(qū)動程序, 因為通過多次測試發(fā)現(xiàn), 在通常情況下, Thin驅(qū)動程序的性能都超過了 OCI 驅(qū)動程序。 U 4 / W: h- M % J 2、關(guān)閉自動提交功能,提高系統(tǒng)性能( z/ q0
13、 X 3 r9 Z: 7 L. p # 4 o Z& u 7 y 在第一次建立與數(shù)據(jù)庫的連接時,在缺省情況下,連接是在自動提交模式下的。為了獲得更好的性能,可以通過調(diào)用帶布爾值 false 參數(shù)的 Connection 類的setAutoCommit()方法關(guān)閉自動提交功能,如下所示: * _8 r: x9 M6 a, v conn.setAutoCommit(false);! Z9 X( R , B 6 B b - $ | $ S! P 9 & z 5 l 值得注意的是,一旦關(guān)閉了自動提交功能,我們就需要通過調(diào)用 Connection 類的 commit()和 rollbac
14、k()方法來人工的方式對事務(wù)進行管理。 3、在動態(tài) SQL 或有時間限制的命令中使用 Statement 對象* s M 6 k& ? U, J 9 C# N 5 H 9 ) ?& 1 ?6 v8 D 7 N 0 G 5 W 在執(zhí)行 SQL 命令時,我們有二種選擇:可以使用 PreparedStatement 對象,也可以使用 Statement 對象。無論多少次地使用同一個 SQL 命令,PreparedStatement 都只對它解析和編譯一次。當(dāng)使用 Statement 對象時,每次執(zhí)行一個 SQL 命令時,都會對它進行解析和編譯。這可能會使你認(rèn)為,使用 Prepared
15、Statement 對象比使用Statement 對象的速度更快。然而,我進行的測試表明,在客戶端軟件中,情況并非如此。因此,在有時間限制的 SQL 操作中,除非成批地處理 SQL 命令,我們應(yīng)當(dāng)考慮使用 Statement 對象。* j 2 # V V k7 | q0 J ) a% F * a( M % b, H . n4 m ? 1 e: U 此外,使用 Statement 對象也使得編寫動態(tài) SQL 命令更加簡單,因為我們可以將字符串連接在一起,建立一個有效的 SQL 命令。因此,我認(rèn)為,Statement 對象可以使動態(tài) SQL 命令的創(chuàng)建和執(zhí)行變得更加簡單。 $ _8 _ D0 Z
16、N 5 5 v9 U w) I 4、利用 helper 函數(shù)對動態(tài) SQL 命令進行格式化( X/ W . 3 H u g2 R5 L 5 2 O+ + d# c 在創(chuàng)建使用 Statement 對象執(zhí)行的動態(tài) SQL 命令時,我們需要處理一些格式化方面的問題。例如,如果我們想創(chuàng)建一個將名字 OReilly 插入表中的 SQL 命令,則必須使用二個相連的“”號替換 OReilly 中的“”號。完成這些工作的最好的方法是創(chuàng)建一個完成替換操作的 helper 方法, 然后在連接字符串心服用公式表達一個 SQL 命令時, 使用創(chuàng)建的 helper 方法。 與此類似的是, 我們可以讓 helper 方
17、法接受一個 Date型的值,然后讓它輸出基于 Oracle 的 to_date()函數(shù)的字符串表達式。( j 8 x* c& g! r G * N 7 I: ? Y 9 a q 5、利用 PreparedStatement 對象提高數(shù)據(jù)庫的總體效率 在使用PreparedStatement對象執(zhí)行SQL命令時, 命令被數(shù)據(jù)庫進行解析和編譯,然后被放到命令緩沖區(qū)。然后,每當(dāng)執(zhí)行同一個 PreparedStatement 對象時,它就會被再解析一次,但不會被再次編譯。在緩沖區(qū)中可以發(fā)現(xiàn)預(yù)編譯的命令,并且可以重新使用。在有大量用戶的企業(yè)級應(yīng)用軟件中,經(jīng)常會重復(fù)執(zhí)行相同的 SQL 命令,使用
18、PreparedStatement 對象帶來的編譯次數(shù)的減少能夠提高數(shù)據(jù)庫的總體性能。如果不是在客戶端創(chuàng)建、預(yù)備、執(zhí)行 PreparedStatement 任務(wù)需要的時間長于 Statement任務(wù),我會建議在除動態(tài) SQL 命令之外的所有情況下使用 PreparedStatement 對象。 7 V , e! f4 Y F % l- R 6、在成批處理重復(fù)的插入或更新操作中使用 PreparedStatement 對象9 & n- Y 9 |. o f 4 A 如果成批地處理插入和更新操作, 就能夠顯著地減少它們所需要的時間。 Oracle提供的 Statement 和 Callab
19、leStatement 并不真正地支持批處理,只有PreparedStatement 對象才真正地支持批處理。我們可以使用 addBatch()和executeBatch()方法選擇標(biāo)準(zhǔn)的 JDBC 批處理,或者通過利用 PreparedStatement 對象的setExecuteBatch()方法和標(biāo)準(zhǔn)的executeUpdate()方法選擇速度更快的Oracle專有的方法。要使用 Oracle 專有的批處理機制,可以以如下所示的方式調(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()時指定的值是一個上限, 當(dāng)達到該值時, 就會自動地引發(fā)SQL 命令執(zhí)行,標(biāo)準(zhǔn)的 executeUpdate()方法
21、就會被作為批處理送到數(shù)據(jù)庫中。我們可以通過調(diào)用 PreparedStatement 類的 sendBatch()方法隨時傳輸批處理任務(wù)。+ E+ | 2 j7 Z * j , 2 ? 7、使用 Oracle locator 方法插入、更新大對象(LOB)& r- Q) H( z $ w o6 U8 H; s 5 z 4 U( y/ # % T 5 o$ e1 h Oracle 的 PreparedStatement 類不完全支持 BLOB 和 CLOB 等大對象的處理,尤其是 Thin 驅(qū)動程序不支持利用 PreparedStatement 對象的 setObject()和setBin
22、aryStream()方法設(shè)置 BLOB 的值,也不支持利用 setCharacterStream()方法設(shè)置CLOB 的值。只有 locator 本身中的方法才能夠從數(shù)據(jù)庫中獲取 LOB 類型的值。可以使用 PreparedStatement 對象插入或更新 LOB,但需要使用 locator 才能獲取 LOB的值。由于存在這二個問題,因此,我建議使用 locator 的方法來插入、更新或獲取LOB 的值。. W $ e/ v3 c % W& n3 ; u6 T0 c) G i 9 e) N 6 - G 8、使用 SQL92 語法調(diào)用存儲過程. O 3 T 2 K e + + o, i 在調(diào)用存儲過程時,我們可以使用 SQL92 或 Oracle PL/SQL,由于使用 Oracle PL/SQL 并沒有什么實際的好處, 而且會給以后維護你的應(yīng)用程序的開發(fā)人員帶來麻煩,因此,我建議在調(diào)用存儲過程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司老年黨出游活動方案
- 公司秋季踏青活動方案
- 公司景區(qū)旅游活動方案
- 公司管理沙龍策劃方案
- 2025年信息系統(tǒng)與信息管理考試題及答案
- 2025年維護工程師職稱資格考試試題及答案
- 2025年現(xiàn)代信息技術(shù)在教育中的應(yīng)用考試試題及答案
- 2025年新聞傳播專業(yè)基礎(chǔ)知識考試試卷及答案
- 2025年物理實驗技能考試試題及答案
- 2025年健身與體育專業(yè)知識與實務(wù)考試試題及答案
- 建設(shè)工程總包合同EPC課件
- 初中英語跨學(xué)科項目設(shè)計心得體會
- 《斯大林格勒戰(zhàn)役》課件
- 監(jiān)控系統(tǒng)培訓(xùn)資料
- 運損車輛銷售合同協(xié)議
- 給排水系統(tǒng)設(shè)施維護與保養(yǎng)標(biāo)準(zhǔn)流程
- 北京市海淀區(qū)2023-2024學(xué)年四年級下學(xué)期語文期末練習(xí)試卷(含答案)
- 銀行安全培訓(xùn)課件
- 2025年節(jié)能知識競賽題庫及答案(共80題)
- 餐飲衛(wèi)生清潔管理制度
- 二保焊基礎(chǔ)知識單選題100道及答案
評論
0/150
提交評論