當前位置:編程學習大全網 - 編程語言 - java怎麽連接sql

java怎麽連接sql

壹、連接各種數據庫方式速查表

下面羅列了各種數據庫使用JDBC連接的方式,可以作為壹個手冊使用。

1、Oracle8/8i/9i數據庫(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、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);

3、Sql Server7.0/2000數據庫

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();

String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";

//mydb為數據庫

String user="sa";

String password="";

Connection conn= DriverManager.getConnection(url,user,password);

4、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);

5、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);

6、MySQL數據庫

Class.forName("org.gjt.mm.mysql.Driver").newInstance();

String url ="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"

//myDB為數據庫名

Connection conn= DriverManager.getConnection(url);

7、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");本文出自 51CTO.COM技術博客

文章出處:DIY部落(/course/3_program/java/javashl/20090306/158643.html)

  • 上一篇:簡歷的個人技能怎麽寫比較好,簡歷的個人評價10篇
  • 下一篇:產品開發設計師的工作職責
  • copyright 2024編程學習大全網