1. 程式人生 > >JAVA連線各種資料庫詳解

JAVA連線各種資料庫詳解

Java資料庫連線(JDBC)由一組用 Java 程式語言編寫的類和介面組成。JDBC 為工具/資料庫開發人員提供了一個標準的 API,使他們能夠用純Java API 來編寫資料庫應用程式。然而各個開發商的介面並不完全相同,所以開發環境的變化會帶來一定的配置變化。本文主要集合了不同資料庫的連線方式。
一、連線各種資料庫方式速查表
下面羅列了各種資料庫使用JDBC連線的方式,可以作為一個手冊使用。
1、Oracle10g/11g資料庫(thin模式)
Class.forName(“oracle.jdbc.driver.OracleDriver”).newInstance();
String url=“jdbc:oracle:thin:@localhost:1521:orcl”; //orcl為資料庫的SID
String user=“test”;
String password=“test”;
Connection conn= DriverManager.getConnection(url,user,password);
2、Mysql資料庫
String driver=com.mysql.jdbc.Driver
String url=jdbc:mysql://127.0.0.1:3306/test
String user=root
String password=root
Class.forName(“driver”)
Connection conn= DriverManager.getConnection(url,user,password);
3、DB2資料庫
Class.forName(“com.ibm.db2.jdbc.app.DB2Driver “).newInstance();
String url=“jdbc:db2://localhost:5000/sample”; //sample為你的資料庫名
String user=“admin”;
String password=””;
Connection conn= DriverManager.getConnection(url,user,password);
4、Sql Server7.0/2000資料庫
Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);
String url=“jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb”;
//mydb為資料庫
String user=“sa”;
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
5、Sybase資料庫
Class.forName(“com.sybase.jdbc.SybDriver”).newInstance();
String url =" jdbc:sybase:Tds:localhost:5007/myDB";//myDB為你的資料庫名
Properties sysProps = System.getProperties();
SysProps.put(“user”,“userid”);
SysProps.put(“password”,“user_password”);
Connection conn= DriverManager.getConnection(url, SysProps);
複製程式碼
6、Informix資料庫
Class.forName(“com.informix.jdbc.IfxDriver”).newInstance();
String url = “jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver;
user=testuser;password=testpassword”; //myDB為資料庫名
Connection conn= DriverManager.getConnection(url);
複製程式碼
7、MySQL資料庫
String url = “jdbc:mysql://localhost:3306/myDB”;//myDB為資料庫名
String user = “root”;
String pwd= “578025471”;
Class.forName(“com.mysql.jdbc.Driver”);
Connection conn = DriverManager.getConnection(url, user, pwd);
8、PostgreSQL資料庫
Class.forName(“org.postgresql.Driver”).newInstance();
String url =“jdbc:postgresql://localhost/myDB” //myDB為資料庫名
String user=“myuser”;
String password=“mypassword”;
Connection conn= DriverManager.getConnection(url,user,password);
8、access資料庫直連用ODBC的
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”) ;
String url=“jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ=“+application.getRealPath(”/Data/ReportDemo.mdb”);
Connection conn = DriverManager.getConnection(url,"","");
Statement stmtNew=conn.createStatement() ;
複製程式碼
二、JDBC連線MySql方式
下面是使用JDBC連線MySql的一個小的教程
1、查詢驅動程式
MySQL目前提供的java驅動程式為Connection/J,可以從MySQL官方網站下載,並找到mysql-connector-java-3.0.15-ga-bin.jar檔案,此驅動程式為純java驅動程式,不需做其他配置。
2、動態指定classpath
如果需要執行時動態指定classpath,就在執行時採用-cp方式。否則將上面的.jar檔案加入到classpath環境變數中。
3、載入驅動程式
try{
Class.forName(com.mysql.jdbc.Driver);
System.out.println(Success loading Mysql Driver!);
}catch(Exception e)

System.out.println(Error loading Mysql Driver!);
e.printStackTrace();

複製程式碼
4、設定連線的url
jdbc:mysql:

//localhost/databasename[?pa=va][&pa=va]
三、以下列出了在使用JDBC來連線Oracle資料庫時可以使用的一些技巧
1、在客戶端軟體開發中使用Thin驅動程式
在開發Java軟體方面,Oracle的資料庫提供了四種類型的驅動程式,二種用於應用軟體、applets、servlets等客戶端軟體,另外二種用 於資料庫中的Java儲存過程等伺服器端軟體。在客戶機端軟體的開發中,我們可以選擇OCI驅動程式或Thin驅動程式。OCI驅動程式利用Java本地 化介面(JNI),通過Oracle客戶端軟體與資料庫進行通訊。Thin驅動程式是純Java驅動程式,它直接與資料庫進行通訊。為了獲得最高的性 能,Oracle建議在客戶端軟體的開發中使用OCI驅動程式,這似乎是正確的。但我建議使用Thin驅動程式,因為通過多次測試發現,在通常情況 下,Thin驅動程式的效能都超過了OCI驅動程式。
2、關閉自動提交功能,提高系統性能
在第一次建立與資料庫的連線時,在預設情況下,連線是在自動提交模式下的。為了獲得更好的效能,可以通過呼叫帶布林值false引數的Connection類的setAutoCommit()方法關閉自動提交功能,如下所示:
conn.setAutoCommit(false);
值得注意的是,一旦關閉了自動提交功能,我們就需要通過呼叫Connection類的commit()和rollback()方法來人工的方式對事務進行管理。
3、在動態SQL或有時間限制的命令中使用Statement物件
在執行SQL命令時,我們有二種選擇:可以使用PreparedStatement物件,也可以使用Statement物件。無論多少次地使用同一個 SQL命令,PreparedStatement都只對它解析和編譯一次。當使用Statement物件時,每次執行一個SQL命令時,都會對它進行解析 和編譯。這可能會使你認為,使用PreparedStatement物件比使用Statement物件的速度更快。然而,我進行的測試表明,在客戶端軟體 中,情況並非如此。因此,在有時間限制的SQL操作中,除非成批地處理SQL命令,我們應當考慮使用Statement物件。
此外,使用Statement物件也使得編寫動態SQL命令更加簡單,因為我們可以將字串連線在一起,建立一個有效的SQL命令。因此,我認為,Statement物件可以使動態SQL命令的建立和執行變得更加簡單。
4、利用helper函式對動態SQL命令進行格式化
在建立使用Statement物件執行的動態SQL命令時,我們需要處理一些格式化方面的問題。例如,如果我們想建立一個將名字O’Reilly插入表中 的SQL命令,則必須使用二個相連的“’’”號替換O’Reilly中的“’”號。完成這些工作的最好的方法是建立一個完成替換操作的helper方法, 然後在連線字串心服用公式表達一個SQL命令時,使用建立的helper方法。與此類似的是,我們可以讓helper方法接受一個Date型的值,然後 讓它輸出基於Oracle的to_date()函式的字串表示式。
5、利用PreparedStatement物件提高資料庫的總體效率
在使用PreparedStatement物件執行SQL命令時,命令被資料庫進行解析和編譯,然後被放到命令緩衝區。然後,每當執行同一個 PreparedStatement物件時,它就會被再解析一次,但不會被再次編譯。在緩衝區中可以發現預編譯的命令,並且可以重新使用。在有大量使用者的 企業級應用軟體中,經常會重複執行相同的SQL命令,使用PreparedStatement物件帶來的編譯次數的減少能夠提高資料庫的總體效能。如果不 是在客戶端建立、預備、執行PreparedStatement任務需要的時間長於Statement任務,我會建議在除動態SQL命令之外的所有情況下 使用PreparedStatement物件。
6、在成批處理重複的插入或更新操作中使用PreparedStatement物件
如果成批地處理插入和更新操作,就能夠顯著地減少它們所需要的時間。Oracle提供的Statement和 CallableStatement並不真正地支援批處理,只有PreparedStatement物件才真正地支援批處理。我們可以使用 addBatch()和executeBatch()方法選擇標準的JDBC批處理,或者通過利用PreparedStatement物件的 setExecuteBatch()方法和標準的executeUpdate()方法選擇速度更快的Oracle專有的方法。要使用Oracle專有的批 處理機制,可以以如下所示的方式呼叫setExecuteBatch():
PreparedStatement pstmt3D null;
try {
((OraclePreparedStatement)pstmt).setExecuteBatch(30);

pstmt.executeUpdate();

複製程式碼
調 用setExecuteBatch()時指定的值是一個上限,當達到該值時,就會自動地引發SQL命令執行,標準的executeUpdate()方法就 會被作為批處理送到資料庫中。我們可以通過呼叫PreparedStatement類的sendBatch()方法隨時傳輸批處理任務。
7、使用Oracle locator方法插入、更新大物件(LOB)
Oracle的PreparedStatement類不完全支援BLOB和CLOB等大物件的處理,尤其是Thin驅動程式不支援利用 PreparedStatement物件的setObject()和setBinaryStream()方法設定BLOB的值,也不支援利用 setCharacterStream()方法設定CLOB的值。只有locator本身中的方法才能夠從資料庫中獲取LOB型別的值。可以使用 PreparedStatement物件插入或更新LOB,但需要使用locator才能獲取LOB的值。由於存在這二個問題,因此,我建議使用 locator的方法來插入、更新或獲取LOB的值。
8、使用SQL92語法呼叫儲存過程
在呼叫儲存過程時,我們可以使用SQL92或Oracle PL/SQL,由於使用Oracle PL/SQL並沒有什麼實際的好處,而且會給以後維護你的應用程式的開發人員帶來麻煩,因此,我建議在呼叫儲存過程時使用SQL92。
9、使用Object SQL將物件模式轉移到資料庫中
既然可以將Oracle的資料庫作為一種面向物件的資料庫來使用,就可以考慮將應用程式中的面向物件模式轉到資料庫中。目前的方法是建立Java bean作為偽裝的資料庫物件,將它們的屬性對映到關係表中,然後在這些bean中新增方法。儘管這樣作在Java中沒有什麼問題,但由於操作都是在資料 庫之外進行的,因此其他訪問資料庫的應用軟體無法利用物件模式。如果利用Oracle的面嚮物件的技術,可以通過建立一個新的資料庫物件型別在資料庫中模 仿其資料和操作,然後使用JPublisher等工具生成自己的Java bean類。如果使用這種方式,不但Java應用程式可以使用應用軟體的物件模式,其他需要共享你的應用中的資料和操作的應用軟體也可以使用應用軟體中的 物件模式。
10、利用SQL完成資料庫內的操作
我要向大家介紹的最重要的經驗是充分利用SQL的面向集合的方法來解決資料庫處理需求,而不是使用Java等過程化的程式語言。
如果程式設計人員要在一個表中查詢許多行,結果中的每個行都會查詢其他表中的資料,最後,程式設計人員建立了獨立的UPDATE命令來成批地更新第一個表中的數 據。與此類似的任務可以通過在set子句中使用多列子查詢而在一個UPDATE命令中完成。當能夠在單一的SQL命令中完成任務,何必要讓資料在網上流來 流去的?我建議使用者認真學習如何最大限度地發揮SQL的功能。
JDBC基礎教程之驅動設定
1、概述
DriverManager 類是 JDBC 的管理層,作用於使用者和驅動程式之間。它跟蹤可用的驅動程式,並在資料庫和相應驅動程式之間建立連線。另外,DriverManager 類也處理諸如驅動程式登入時間限制及登入和跟蹤訊息的顯示等事務。
對於簡單的應用程式,一般程式設計師需要在此類中直接使用的唯一方法是 DriverManager.getConnection。正如名稱所示,該方法將建立與資料庫的連線。JDBC 允許使用者呼叫 DriverManager 的方法 getDriver、getDrivers 和 registerDriver 及 Driver 的方法 connect。但多數情況下,讓 DriverManager 類管理建立連線的細節為上策。
1、跟蹤可用驅動程式
DriverManager 類包含一列 Driver 類,它們已通過呼叫方法 DriverManager.registerDriver 對自己進行了註冊。所有 Driver 類都必須包含有一個靜態部分。它建立該類的例項,然後在載入該例項時 DriverManager 類進行註冊。這樣,使用者正常情況下將不會直接呼叫 DriverManager.registerDriver;而是在載入驅動程式時由驅動程式自動呼叫。載入 Driver 類,然後自動在 DriverManager 中註冊的方式有兩種:
通過呼叫方法 Class.forName。這將顯式地載入驅動程式類。由於這與外部設定無關,因此推薦使用這種載入驅動程式的方法。以下程式碼載入類 acme.db.Driver:
class.forname(“acme.db.driver”);
如果將 acme.db.Driver 編寫為載入時建立例項,並呼叫以該例項為引數的 DriverManager.registerDriver(本該如此),則它在 DriverManager 的驅動程式列表中,並可用於建立連線。
通過將驅動程式新增到 java.lang.System 的屬性 jdbc.drivers 中。這是一個由 DriverManager 類載入的驅動程式類名的列表,由冒號分隔:初始化 DriverManager 類時,它搜尋系統屬性 jdbc.drivers,如果使用者已輸入了一個或多個驅動程式,則 DriverManager 類將試圖載入它們。以下程式碼說明程式設計師如何在 ~/.hotjava/properties 中輸入三個驅動程式類(啟動時,HotJava 將把它載入到系統屬性列表中):
jdbc.drivers=foo.bah.driver:wombat.sql.driver:bad.test.ourdriver;
對 DriverManager 方法的第一次呼叫將自動載入這些驅動程式類。
注意:載入驅動程式的第二種方法需要持久的預設環境。如果對這一點不能保證,則呼叫方法 Class.forName 顯式地載入每個驅動程式就顯得更為安全。這也是引入特定驅動程式的方法,因為一旦 DriverManager 類被初始化,它將不再檢查 jdbc.drivers 屬性列表。
在以上兩種情況中,新載入的 Driver 類都要通過呼叫 DriverManager.registerDriver 類進行自我註冊。如上所述,載入類時將自動執行這一過程。
由於安全方面的原因,JDBC 管理層將跟蹤哪個類載入器提供哪個驅動程式。這樣,當 DriverManager 類開啟連線時,它僅使用本地檔案系統或與發出連線請求的程式碼相同的類載入器提供的驅動程式。
2、建立連線
載入 Driver 類並在 DriverManager 類中註冊後,它們即可用來與資料庫建立連線。當呼叫 DriverManager.getConnection 方法發出連線請求時,DriverManager 將檢查每個驅動程式,檢視它是否可以建立連線。
有時可能有多個 JDBC 驅動程式可以與給定的 URL 連線。例如,與給定遠端資料庫連線時,可以使用 JDBC-ODBC 橋驅動程式、JDBC 到通用網路協議驅動程式或資料庫廠商提供的驅動程式。在這種情況下,測試驅動程式的順序至關重要,因為 DriverManager 將使用它所找到的第一個可以成功連線到給定 URL 的驅動程式。
首先 DriverManager 試圖按註冊的順序使用每個驅動程式(jdbc.drivers 中列出的驅動程式總是先註冊)。它將跳過程式碼不可信任的驅動程式,除非載入它們的源與試圖開啟連線的程式碼的源相同。
它通過輪流在每個驅動程式上呼叫方法 Driver.connect,並向它們傳遞使用者開始傳遞給方法 DriverManager.getConnection 的 URL 來對驅動程式進行測試,然後連線第一個認出該 URL 的驅動程式。
這種方法初看起來效率不高,但由於不可能同時載入數十個驅動程式,因此每次連線實際只需幾個過程呼叫和字串比較。
以下程式碼是通常情況下用驅動程式(例如 JDBC-ODBC 橋驅動程式)建立連線所需所有步驟的示例:
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); //載入驅動程式
String url = “jdbc:dbc:fred”;
DriverManager.getConnection(url, “userID”, “passwd”);

文章轉載於:
https://www.cnblogs.com/kabi/p/5182809.html