1. 程式人生 > >J2EE——JDBC連線資料庫例項

J2EE——JDBC連線資料庫例項

上篇部落格初步介紹了JDBC,並簡單提到了連線資料庫的4種不同驅動方式:

1JDBC-ODBC橋驅動

2Java驅動

3)本地API部分Java驅動

4JDBC網路純Java驅動

本篇部落格通過兩個小例項,來介紹JDBC-ODBC橋驅動方式Java驅動方式,從而進一步瞭解JDBC的工作步驟和機制。

JDBC工作步驟:

1)建立資料來源

2)載入驅動程式

3)獲得連線物件

4)建立語句物件

5)執行Sql語句

6)關閉資源

1JDBC-ODBC橋驅動方式

   (1)建立資料來源

首先建立ODBC資料來源:

【開始】設定】控制面板】【管理工具】

【資料來源(ODBC)】

新建資料來源,名稱可以任意,這裡假設已經建立了一個名為myODBC的資料來源,連線到oracle中的orcl資料庫。

2)載入驅動程式

  • 使用Class類的forName方法,將驅動程式類載入到JVMJava虛擬機器)中;
  • 方 法 原 型

    說    明

    static Class forName(String className)

    throws ClassNotFoundException

    將由className指定完整名稱的類載入到JVM中,如果載入失敗,將丟擲異常,必須捕捉

  • 對於使用JDBC-ODBC橋的驅動方式,應該載入:

sun.jdbc.odbc.JdbcOdbcDriver

  • 如:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

3)獲得連線物件

  • 成功載入驅動後,必須使用DriverManager類的靜態方法getConnection來獲得連線物件;
  • 方 法 原 型

    說    明

    static Connection getConnection

    (String url, String user,

    String password)

    throws SQLException

    引數url是連線字串,引數user是資料庫使用者名稱,引數password是登入口令,成功連線到資料庫返回Connection物件,連線失敗則丟擲

    SQLException異常,必須捕捉

  • 對於使用JDBC-ODBC橋的連線方式,連線字串的一般形式是:“jdbc:odbc:資料來源名稱”,如:
Connection con =
DriverManager.getConnection("jdbc:odbc:myODBC", “scott", “tiger");


4)建立語句物件

  • 一旦成功連線到資料庫,獲得Connection物件後,必須通過Connection物件的createStatement方法來建立語句物件,才可以執行SQL語句;
  • 方 法 原 型

    說    明

    Statement createStatement()

    throws SQLException

    成功建立返回Statement物件,否則丟擲SQLException異常,必須捕捉

  • 如:
Statement sta = con.createStatement();

5)執行sql語句

  • 使用語句物件來執行SQL語句,有兩種情況:
  • 一種是執行DELETEUPDATEINSERT之類的資料庫操作語句(DML),這樣的語句沒有資料結果返回,使用Statement物件的executeUpdate方法執行;
  • 方 法 原 型

    說    明

    int executeUpdate(String sql)

    throws SQLException

    引數sql是要執行的SQL語句,執行成功返回受影響的行數,執行失敗則丟擲SQLException異常,必須捕捉

  • 如:
sta.executeUpdate("INSERT INTOFriends VALUES('田七', '重慶',  456712, '2003-2-25',7500)");

  • 另一種是執行SELECT這樣的資料查詢語句(DQL),這樣的語句將從資料庫中獲得所需的資料,使用Statement物件的executeQuery方法執行;
  • 方 法 原 型

    說    明

    ResultSet executeQuery(String sql)

    throws SQLException

    引數sql是要執行的SQL語句,查詢成功返回包含有結果資料的ResultSet物件,否則丟擲SQLException異常,必須捕捉

  • 如:
ResultSet rs =
sta.executeQuery("SELECT * FROM Friend");


6)關閉資源

  • 當對資料庫的操作結束後,應當將所有已經被開啟的資源關閉,否則將會造成資源洩漏;
  • Connection物件、Statement物件和ResultSet物件都有執行關閉的close方法;
  • 函式原型都是:void close() throws SQLException
  • 如:
rs.close();   //關閉ResultSet物件
sta.close();  //關閉Statement物件
con.close();  //關閉Connection物件

  • 有可能丟擲SQLException異常,必須捕捉;
  • 請注意關閉的順序,最後開啟的資源最先關閉,最先開啟的資源最後關閉。

完整例子:

import java.sql.*;    //匯入java.sql包
public class JDBCDemo {
  public static void main(String[] args){
   String strCon = "jdbc:odbc:myODBC";  //連線字串
    String strUser = “scott";               //資料庫使用者名稱
    String strPwd = “tiger";                  //口令
    System.out.println("正在連線資料庫...");
    try{  //監控異常
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  //載入驅動程式
      Connection con;
      //獲得連線物件
      con = DriverManager.getConnection(strCon, strUser, strPwd);
     System.out.println("成功連線到資料庫。");
     Statement sta = con.createStatement();   //建立語句物件
      //執行SQL語句
      String strSql = "DELETE FROM Friends WHERE [Name] = '鄭六'";
     intcount = sta.executeUpdate(strSql);
     System.out.println("成功刪除" + count + "行資料。");
     sta.close(); con.close();    //關閉所有已經開啟的資源
    } catch (ClassNotFoundException cnfe) {cnfe.printStackTrace(); }
   catch(SQLException sqle) { sqle.printStackTrace(); } }

2,純java驅動方式

使用JDBC-ODBC橋方式連線資料庫,其效能完全取決於資料來源(ODBC)的效能,並且無法脫離Microsoft的平臺,這樣將帶來不便;

大部分DBMS產商都為自己的產品開發了純Java的驅動程式,我們只需要載入相應的驅動,就可以直接連線到資料庫,而無需通過ODBC橋連線;

鑑於DBMS產品太多,這裡只針對當今比較流行的SQL Server 2000Oracle 9i進行介紹。

1)下載驅動程式包

要使用純Java驅動,首先必須獲得相應資料庫的驅動程式包;

根據資料庫的型別,登入對應產商的官方網站,一般都可以免費獲得;

下載後,複製到本地磁碟,並將完整路徑設定到classpath環境變數中,如用開發工具開發程式,還需在開發環境中設定路徑。

2)純java驅動連線Oracle

使用純Java驅動連線到Oracle 9i資料庫,載入驅動程式應改成如下語句:

Class.forName("oracle.jdbc.driver.OracleDriver");

連線字串應如下格式:

   "jdbc:oracle:thin:@服務名或IP:1521:資料庫名"

如:

 Connection con =DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ORA", "scott", "tiger"); 

3)純java驅動連線Sql Server

使用純Java驅動連線到SQL Server 2005資料庫,載入驅動程式應改成如下語句:

Class.forName("com.microsoft. Sqlserver.jdbc.SQLServerDriver");

連線字串應如下格式:

   "jdbc:microsoft:sqlserver://伺服器名或IP:1433;databaseName=資料庫名"

如:

Connection con = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;databaseName=pubs", "sa", "");

4)純java驅動連線mysql

使用純Java驅動連線到SQL Server 2005資料庫,載入驅動程式應改成如下語句:

Class.forName("com.mysql.jdbc.Driver");

連線字串應如下格式:

   "jdbc:mysql://伺服器名或IP:3306/資料庫名"

如:

conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bbs", "root" , "root");

3,總結:

JDBC是使用Java程式操作資料庫的技術;

使用Class類的forName方法可以將驅動程式載入到Java直譯器中;

使用DriverManager類的getConnection方法獲得Connection物件,從而建立與資料庫的連線;

使用Connection物件的createStatement方法建立語句物件,以便執行SQL語句;

使用Statement物件的executeQueryexecuteUpdate方法執行SQL語句,並使用ResultSet物件來操作結果資料;