JDBC ODBC區別

一.JDBC(Java DataBase Connectivity standard)

1.JDBC,它是一個面向對象的應用程序接口(API), 經過它可訪問各種關係數據庫。 java

2. 驅動程序(JDBC driver)mysql

要經過JDBC來存取某一特定的數據庫,必須有相應的JDBC driver,它每每是由生產數據庫的廠家提供,是鏈接JDBC API與具體數據庫之間的橋樑。web

3.DBMSsql

4.三者之間的聯繫數據庫

JDBC API調用驅動程序來訪問DBMS apache

二.ODBC(Open Database Connectivity,開放數據庫互連)

ODBC是微軟公司創建的一組規範,提供了一組對數據庫訪問的標準API。編程

1. ODBC管理器(Administrator)tomcat

該程序主要任務是管理安裝的ODBC驅動程序和管理數據源。安全

2. 驅動程序管理器(Driver Manager)服務器

驅動程序管理器的任務是管理ODBC驅動程序,是ODBC中最重要的部件。 

3. ODBC 驅動程序

是微軟公司提供的,提供了ODBC和數據庫之間的接口。

4. 數據源

數據源包含了數據庫位置和數據庫類型、驅動程序等信息,其實是一種數據鏈接的抽象。

5. 各部件之間的關係

應用程序要訪問一個數據庫,首先必須用ODBC管理器註冊一個數據源,管理器根據數據源創建起ODBC與具體數據庫的聯繫。

在ODBC中,ODBC API不能直接訪問數據庫,必須經過驅動程序管理器與數據庫交換信息。驅動程序管理器負責將應用程序對ODBC API的調用傳遞給正確的驅動程序,而驅動程序在執行完相應的操做後,將結果經過驅動程序管理器返回給應用程序。  

三.JDBC鏈接DBMS的方式

1.JDBC鏈接DBMS

(1)導入包:

這須要你有軟件包包含了數據庫編程所需的JDBC類。大多數狀況下,使用import java.sql.* 就足夠了,以下所示:

//STEP 1. Import required packages
import java.sql.*;

(2)加載JDBC驅動程序:

這須要初始化驅動程序,這樣就能夠打開與數據庫的通訊信道。如下是代碼片斷實現這一目標:

//STEP 2: Register JDBC driver
Class.forName("com.mysql.jdbc.Driver");

(3)創建鏈接:

這須要使用DriverManager.getConnection()方法來建立一個Connection對象,它表明一個物理鏈接的數據庫,以下所示:

//STEP 3: Open a connection
// Database credentials
static final String USER = "username";
static final String PASS = "password";
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);

(4)執行一個查詢:

這須要使用一個對象類型Statement或PreparedStatement構建,並提交一個SQL語句到數據庫。以下:

//STEP 4: Execute a query
System.out.println("Creating statement...");
stmt = conn.createStatement();
String sql;
sql = "SELECT id, first, last, age FROM Employees";
ResultSet rs = stmt.executeQuery(sql);

若是有一個SQL UPDATE,INSERT或DELETE語句,那麼須要下面的代碼片斷:

//STEP 4: Execute a query
System.out.println("Creating statement...");
stmt = conn.createStatement();
String sql;
sql = "DELETE FROM Employees";
ResultSet rs = stmt.executeUpdate(sql);

(5)從結果集中提取數據:

這一步是必需的狀況下,從數據庫中獲取數據。可使用適當的ResultSet.getXXX()方法來檢索的數據結果以下:

//STEP 5: Extract data from result set
while(rs.next()){
//Retrieve by column name
int id = rs.getInt("id");
int age = rs.getInt("age");
String first = rs.getString("first");
String last = rs.getString("last");

//Display values
System.out.print("ID: " + id);
System.out.print(", Age: " + age);
System.out.print(", First: " + first);
System.out.println(", Last: " + last);
}

(6)清理環境:

應該明確地關閉全部的數據庫資源,對依賴於JVM的垃圾收集以下:

//STEP 6: Clean-up environment
rs.close();
stmt.close();
conn.close(); 

2.JDBC-ODBC橋鏈接

(1)創建數據源

(2)加載驅動程序

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

(3)創建鏈接

Connection con = DriverManager.getConnection(url, "myLogin", "myPassword");、

JDBC URL 將以 jdbc:odbc 開始:餘下 URL 一般是你的數據源名字或數據庫系統。

(4)同JDBC方式的(4)(5)(6)相同。 

四.JDBC和ODBC的區別

1. jdbc是java經過網絡訪問db的url鏈接的方式;odbc是本地創建鏈接後再使用的方式。

或者說:前者是數據庫官方版本,後者是符合規範的通用版本。

2. 驅動不一樣:JDBC的驅動程序由數據庫廠商提供,ODBC驅動程序由微軟提供。

3. java中通常採用JDBC鏈接 或JDBC-ODBC橋鏈接;java不直接調用ODBC API的緣由是 ODBC採用C語言編寫, 在移植性、安全性方面有欠缺。

4. JDBC-ODBC橋鏈接 通常用於本地學習或者局域網內使用;而JDBC方式可實現跨平臺移植,適用範圍廣。

5. JDBC-ODBC橋鏈接通常用在JDK 5 之前。因爲在JDK 5 之前,服務器廠商沒有提供JDBC驅動程序,只能採用ODBC橋鏈接。

5、Access數據庫鏈接示例

  鏈接Access數據庫時應該只有JDBC-ODBC橋接方式,沒有JDBC方式。

import java.sql.*;

public class dbconn {
  static final String DBDriver ="sun.jdbc.odbc.JdbcOdbcDriver";
  static final String strConn ="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=C:/apache-tomcat-6.0.45/webapps/site/DB/dataDB.mdb";
  static final String DBusername="";
  static final String DBpassword="";
  Connection conn=null;
  ResultSet rs=null;
  public static String dbconn() {
    String sErr = "";
    try {
      java.sql.DriverManager.registerDriver((java.sql.Driver)(Class.forName(DBDriver).newInstance()));
    }catch (Exception e) {
      sErr = e.toString();
    }
      return (sErr);
  }

  java.sql.Connection cn() throws SQLException {
    return java.sql.DriverManager.getConnection(strConn , DBusername, DBpassword);
  }

}

相關文章
相關標籤/搜索