1.JDBC,它是一個面向對象的應用程序接口(API), 經過它可訪問各種關係數據庫。 java
2. 驅動程序(JDBC driver)mysql
要經過JDBC來存取某一特定的數據庫,必須有相應的JDBC driver,它每每是由生產數據庫的廠家提供,是鏈接JDBC API與具體數據庫之間的橋樑。web
3.DBMSsql
4.三者之間的聯繫數據庫
JDBC API調用驅動程序來訪問DBMS apache
ODBC是微軟公司創建的一組規範,提供了一組對數據庫訪問的標準API。編程
1. ODBC管理器(Administrator)tomcat
該程序主要任務是管理安裝的ODBC驅動程序和管理數據源。安全
2. 驅動程序管理器(Driver Manager)服務器
驅動程序管理器的任務是管理ODBC驅動程序,是ODBC中最重要的部件。
3. ODBC 驅動程序
是微軟公司提供的,提供了ODBC和數據庫之間的接口。
4. 數據源
數據源包含了數據庫位置和數據庫類型、驅動程序等信息,其實是一種數據鏈接的抽象。
5. 各部件之間的關係
應用程序要訪問一個數據庫,首先必須用ODBC管理器註冊一個數據源,管理器根據數據源創建起ODBC與具體數據庫的聯繫。
在ODBC中,ODBC API不能直接訪問數據庫,必須經過驅動程序管理器與數據庫交換信息。驅動程序管理器負責將應用程序對ODBC API的調用傳遞給正確的驅動程序,而驅動程序在執行完相應的操做後,將結果經過驅動程序管理器返回給應用程序。
(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();
(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)相同。
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橋鏈接。
鏈接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);
}
}