JDBC ODBC区别

一.JDBC(Java DataBase Connectivity standard)

1.JDBC,它是一个面向对象的应用程序接口(API), 通过它可访问各类关系数据库。

2. 驱动程序(JDBC driver)

要通过JDBC来存取某一特定的数据库,必须有相应的JDBC driver,它往往是由生产数据库的厂家提供,是连接JDBC API与具体数据库之间的桥梁。

3.DBMS

4.三者之间的联系

JDBC API调用驱动程序来访问DBMS

二.ODBC(Open Database Connectivity,开放数据库互连)

ODBC是微软公司建立的一组规范,提供了一组对数据库访问的标准API。

1. ODBC管理器(Administrator)

该程序主要任务是管理安装的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桥连接。

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

}

时间: 2024-12-17 15:49:11

JDBC ODBC区别的相关文章

Connection conn = DriverManager.getConnection("jdbc:odbc:bbs");

Connection conn = DriverManager.getConnection("jdbc:odbc:bbs"); 这是JDBC连接数据库的时候用的一句话,,Connection是接口,DriverManager是一个类,,getConnection()方法  是静态方法 他们之所以能用= 号连接起 因为getConnection()方法 返回的是 实现了Connection接口的类的实例 其实Connection 是类 还是接口,,正常情况下使用类声明一个变量,, 而 接

Atitit.跨语言数据库db  api兼容性 jdbc odbc ado oledb 增强方案

Atitit.跨语言数据库db  api兼容性 jdbc odbc ado oledb 增强方案 1. 跨语言db api兼容性..1 2. 目前访问数据库的接口很多.比较常用的jdbc odbc 以及c api (php用此接口),共约101个类+128个c函数1 2.1. Jdbc api数量  约60个类..java.sql包下面的..大概几百个方法函数吧..2 2.2. Odbc api数量::约78个,odbc是个非oo的api2 2.3. C api (mysql ): 约50个..

JSP使用JDBC ODBC 实例

JDBC ODBC Brige driver是JSP连接数据库的驱动,只要安装了JDK这个驱动就默认安装了 配置JDBC ODBC数据源的步骤:http://blog.csdn.net/lissdy/article/details/7059828 创建WebApplication,参照本博客其他文章 在WebApp目录下创建JSP 文件 创建JSP文件的时候发现JSP的标签不能自动code complete. 到settings->输入Code Complete 改变code complete 

Eclipse & MySQL & JDBC||ODBC的配置与测试

Eclipse/MySQL/JDBC(ODBC)的配置与测试 第一步MySQL安装 01下载地址:http://dev.mysql.com/downloads/mysql/5.6.html 02download: 03解压缩到安装目录.(我的安装目录为D:\App) 04配置MySQL的环境变量 将MySQL安装目录下的bin文件夹路径,添加到path环境变量中. (我的路径:D:\App\mysql-5.6.19-win32\bin). 05打开命令行,进入\bin目录中,输入mysql –i

有关Access JDBC ODBC问题

前言:学校教学Java课程中有要连接jdbc odbc的需求,在自己电脑上测试的时候出现很多的问题. 又增添Tomcat课程,连接access jdbc odbc需求增大: 下面是本人出现的问题和解决办法 系统WIN10 64位 office 2016 ①首先,JDK1.8版本取消了JDBC ODBC的连接方式,换JDK1.7版本,当然你可以选择其它更低级的的版本. ②创建ODBC时,有两种选择. ③64位的打开后无,Microsoft Access Driver 选项,选择32位的进行创建.

java 8: ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver

转眼之间, java 11都快要推出了. 而我一直都在 java 7环境下写代码,真的不想升级,不想改变什么,可世界每天都在变化. 最近因为服务端需要SNI,而 java 7 只支持客户端的SNI,只有升级到java 8才能使用服务端的 SNI,我又怕升级到 java 8后,原来的代码受影响,就找了台平时不用的电脑安装了 java 8. 运行了一下代码,果然遇到了问题:ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver 网上搜索了一下相关资料

JDBC 与 ODBC 区别

一. 二.

org.gjt.mm.mysql.Driver与com.mysql.jdbc.Driver区别

org.gjt.mm.mysql.Driver 是早期的驱动名称,后来就改名为com.mysql.jdbc.Driver,现在一般都推荐使用com.mysql.jdbc.Driver.在最新版 本的mysql jdbc驱动中,为了保持对老版本的兼容,仍然保留了org.gjt.mm.mysql.Driver,但是实际上 org.gjt.mm.mysql.Driver中调用了com.mysql.jdbc.Driver,因此现在这两个驱动没有什么区别. 又如其它说法: org.gjt.mm.mysql

jdbc odbc JDBC-ODBC

https://zh.wikipedia.org/zh-cn/ODBC ODBC(Open Database Connectivity,开放数据库互连)提供了一种标准的API(应用程序编程接口)方法来访问数据库管理系统(DBMS).这些API利用SQL来完成其大部分任务.ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC.ODBC的设计者们努力使它具有最大的独立性和开放性:与具体的编程语言无关,与具体的数据库系统无关,与具体的操作系统无关. https://zh.wik