標籤:
1. JDBC驅動程式的類型
目前比較常見的JDBC驅動程式可分為以下四個種類:
(1)JDBC-ODBC橋加ODBC驅動程式
JavaSoft橋產品利用ODBC驅動程式提供JDBC訪問。注意,必須將ODBC二進位代碼(許多情況下還包括資料庫客戶機代碼)載入到使用該驅動程式的每個客戶機上。因此,這種類型的驅動程式最適合於企業網(這種網路上客戶機的安裝不是主要問題),或者是用Java編寫的三層結構的應用程式伺服器代碼。
(2)本地API
這種類型的驅動程式把客戶機API上的JDBC調用轉換為Oracle、Sybase、Informix、DB2或其它DBMS的調用。注意,象橋驅動程式一樣,這種類型的驅動程式要求將某些二進位代碼載入到每台客戶機上。
(3)JDBC網路純Java驅動程式
這種驅動程式將JDBC轉換為與DBMS無關的網路通訊協定,之後這種協議又被某個伺服器轉換為一種DBMS協議。這種網路伺服器中介軟體能夠將它的純Java客戶機串連到多種不同的資料庫上。所用的具體協議取決於提供者。通常,這是最為靈活的JDBC驅動程式。有可能所有這種解決方案的提供者都提供適合於Intranet用的產品。為了使這些產品也支援Internet訪問,它們必須處理Web所提出的安全性、通過防火牆的訪問等方面的其他需求。幾家提供者正將JDBC驅動程式加到他們現有的資料庫中介軟體產品中。
(4)本地協議純Java驅動程式
這種類型的驅動程式將JDBC調用直接轉換為DBMS所使用的網路通訊協定。這將允許從客戶機機器上直接調用DBMS伺服器,是Intranet訪問的一個很實用的解決方案。由於許多這樣的協議都是專用的,因此資料庫提供者自己將是主要來源,有幾家提供者已在著手做這件事了。
據專家預計第(3)、(4)類驅動程式將成為從JDBC訪問資料庫的首方法。第(1)、(2)類驅動程式在直接的純Java驅動程式還沒有上市前會作為過渡方案來使用。對第(1)、(2)類驅動程式可能會有一些變種,這些變種要求有連接器,但通常這些是更加不可取的解決方案。第(3)、(4)類驅動程式提供了Java的所有優點,包括自動安裝(例如,通過使用JDBC驅動程式的appletapplet來下載該驅動程式)。
2. JDBC編程的步驟
1)第一步:載入驅動程式
//jdbc-odbc驅動
try{
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
}catch(ClassNotFoundException e){
e.printStackTrace();
}
載入其他各種不同驅動程式的方法如下:
//sqlserver
Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);
//mysql
Class.forName(“org.gjt.mm.mysql.Driver”);
//oracle
Class.forName(Oracle.jdbc.driver.OracleDriver);
//Informix
Class.forName(“com.informix.jdbc.IfxDriver”);
//Sybase
Class.forName(“com.sybase.jdbc2.jdbc.SybDriver”);
//AS400
Class.forName(“com.ibm.as400.access.AS400JDBCConnection”);
2)第二步:將“驅動程式”傳遞到DriverManager,然後獲得“串連”。
DriverManager類的getConnection(String rul,String user,String password)方法用於建立與某個資料庫的串連。每個JDBC驅動程式使用一個專門的JDBC URL作為自我標識的一種方法。
JDBC URL的格式為:jdbc:<子協議名>:<子名稱>,子協議與子名稱和JDBC驅動程式有關。
//建立JDBC-ODBC驅動的串連
try{
String url=”jdbc:odbc:myodbc”;
Connection con=DriverManager.getConnection(url);
//或者
//Connection con=DriverManager.getConnection(url,user,password);;
} catch(SQLException e){
e.printStackTrace();
}
以下是串連各種不同的資料庫的URL編寫方法:
//sqlserver
DriverManger.getConnection(“jdbc:Microsoft:sqlserver://主機:連接埠號碼;DatabaseName=資料庫名”,”使用者名稱”,”密碼”)
//mysql
DriverManger.getConnection(“jdbc:mysql://主機:連接埠號碼:資料庫名”,”使用者名稱”,”密碼”)
//oracle
DriverManger.getConnection(“jdbc:Oracle:thin:@主機:連接埠號碼:資料庫名”,”使用者名稱”,”密碼”)
//Informix
DriverManger.getConnection(“jdbc:informix-sqli://主機:連接埠號碼/資料庫名:INFORMIXSERVER=informix服務名”,”使用者名稱”,”密碼”)
//Sybase
DriverManger.getConnection(“jdbc:sybase:Tds:主機:連接埠號碼/資料庫名”,”使用者名稱”,””密碼)
//AS400
DriverManger.getConnection(“jdbc:as400://主機”,”使用者名稱”,”密碼”)
3)第三步:建立語句,Statement、PreparedStatement或CallableStatement,並將它們用於更新資料庫或執行查詢。
4)第四步:查詢並返回包含有已請求資料的ResultSet,該ResuletSet是按類檢索的。
5)顯示資料或根據得到的查詢結果完成商務邏輯處理。
6)第六步:最後關閉ResultSet(結果集)、Statement(語句對象)、Conection(資料庫連接)。
3. 資料庫各種串連方式執行個體分析
1)通過ODBC建立與資料庫的串連,建立資料來源的過程略掉,資料來源的名稱為myodbc,代碼:
<%@ page language="java" contentType="text/html; charset=GBK"%><%@ page import="java.sql.*" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>通過ODBC建立串連</title> </head> <body> <% Connection con = null; try { // 載入ODBC驅動 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // 通過驅動管理器(DriverManager)獲得串連 con = DriverManager.getConnection("jdbc:odbc:myodbc", "sa",""); // 如果串連不成功,就會出現異常,不會執行下面這個語句 out.println("<H1>"); out.println("通過ODBC資料來源串連資料庫成功!"); out.println("</H1>"); } catch (Exception e) {// 如果出現異常,會列印堆棧裡異常的資訊 e.printStackTrace(); } finally {// 用完後,關閉串連,釋放資源 try { if (con != null) // 防止出現記憶體泄露 con.close(); } catch (Exception e) { e.printStackTrace(); } } %> </body></html>
2)通過sqlserver提供驅動程式獲得串連,需要3個jar檔案:msbase.jar、mssqlserver.jar、msutil.jar,設定class環境變數,或者配置到WEB中,jar檔案部署,和所有的jar檔案一樣,想在整個WEB伺服器(我指Tomcat)中使用,就拷貝到Tomcat 6.0\lib目錄下,若在當前WEB應用中使用,拷貝到WEB應用的WEB-INF\lib目錄下。代碼:
<%@ page language="java" contentType="text/html; charset=GBK"%><%@ page import="java.sql.*" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>通過Sqlserver純驅動程式建立串連</title> </head> <body> <% Connection con = null; try { // 載入SQLSERVER的驅動程式 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); // 通過驅動來獲得一個串連 con = DriverManager.getConnection( "jdbc:microsoft:sqlserver://localhost:1433;" + "databasename=pubs", "sa", ""); // 如果串連不成功,就會出現異常,不會執行下面這個語句 out.println("<H1>"); out.println("通過SQLServer純驅動程式串連資料庫成功!<br> con="+con); out.println("</H1>"); } catch (Exception e) {// 如果出現異常,會列印堆棧裡異常的資訊 e.printStackTrace(); } finally {// 用完後,關閉串連,釋放資源 try { if (con != null) // 防止出現記憶體泄露 con.close(); } catch (Exception e) { e.printStackTrace(); } } %> </body></html>
其他詳見原http://www.blogjava.net/haizhige/archive/2008/10/21/235763.html
【轉】JSP中資料庫的一些操作