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);
  }

}

相关文章
相关标签/搜索