在学习J2EE的JDBC过程中,刚见到JDBC就立即联想到了ODBC,并且我们能够肯定他们之间有必定的关系。開始学它的时候还是认为有点晕,于是就查了非常多资料,与比較熟悉的ODBC进行了比較。

先各自简介一下ODBC和JDBC。

ODBC(Open Database Connectivity)是一组对数据库訪问的标准API。这些API通过SQL来完毕大部分任务,并且它本身也支持SQL语言,支持用户发来的SQL。

ODBC定义了訪问数据库API的一组规范。这些API独立于形色各异的DBMS和编程语言。

也就是说,一个基于ODBC的应用程序,对数据库的操作不依赖不论什么DBMS。不直接与DBMS打交道,全部的数据库操作由相应的DBMS的ODBC驱动程序完毕。不论是SQL Server、Access还是Oracle数据库,均可用ODBC API进行訪问。

由此可见,ODBC的最大长处是能以统一的方式处理全部的数据库

JDBC(JavaDatabase Connectivity)是Java与数据库的接口规范,JDBC定义了一个支持标准SQL功能的通用低层API。它由Java
语言编写的类和接口组成,旨在让各数据库开发商为Java程序猿提供标准的数据库API。

JDBC API定义了若干Java中的类,表示数据库连接、SQL指令、结果集、数据库元数据等。

它同意Java程序猿发送SQL指令并处理结果。

事实上JDBC和ODBC总的来说还是有很多其它的共同点

比方,JDBC与ODBC都是基于X/Open的SQL调用级接口;

从结构上来讲,JDBC的整体结构类似于ODBC,都有四个组件:应用程序、驱动程序管理器、驱动程序和数据源,工作原 理亦大体同样。

在内容交互方面。JDBC保持了ODBC的基本特性,也独立于特定数据库.
并且都不是直接与数据库交互,而是通过驱动程序管理器。

他们二者之间的差别

 我们知道,ODBC差点儿能在全部平台上连接差点儿全部的数据库。为什么 Java 不使用 ODBC?
 答案是:Java 能够使用 ODBC。但最好是以JDBC-ODBC桥的形式使用(Java连接整体分为Java直连和JDBC-ODBC桥两种形式)。
 那为什么还须要 JDBC?
 由于ODBC 不适合直接在 Java 中使用,由于它使用 C 语言接口。从Java 调用本地 C代码在安全性、实现、牢固性和程序的自己主动移植性方面都有很多缺点。

从 ODBC C API 到 Java API 的字面翻译是不可取的。

比如,Java 没有指针。而 ODBC 却对指针用得非常广泛(包含非常easy出错的指针"void *")。

 另外,ODBC 比較复杂,而JDBC 尽量保证简单功能的简便性。同一时候在必要时同意使用高级功能。

假设使用ODBC。就必须手动地将 ODBC 驱动程序管理器和驱动程序安装在每台客户机上。

假设全然用 Java 编写 JDBC 驱动程序则 JDBC代码在全部 Java 平台上(从网络计算机到大型机)都能够自 动安装、移植并保证安全性。

 总之,JDBC 在非常大程度上是借鉴了ODBC的,从他的基础上发展而来。JDBC 保留了 ODBC 的基本设计特征,因此。熟悉 ODBC 的程序猿将发现 JDBC 非常easy使用。

它们之间最大的差别在于:JDBC 以 Java 风格与长处为基础并进行优化。因此更加易于使用。


ODBC与JDBC比較的更多相关文章

  1. 什么是ODBC和JDBC?

    jdbc是使用通过JAVA的数据库驱动直接和数据库相连,而jdbc-odbc连接的是ODBC的数据源,真正与数据库建立连接的是ODBC! 建议使用JDBC直接连接,同时最好使用连接池! JDBC 是 ...

  2. JDBC 与ODBC的区别

    一.ODBC(Open   DataBase   Connectivity   :  开放数据库连接)         ODBC  总体结构  应用程序    执行处理并调用odbc函数,提交sql语 ...

  3. 概念学习 - JNDI, JDBC, ODBC, DataSource

    layout: post title: 概念学习 - JNDI, JDBC, ODBC, DataSource --- 最近在学习Java Hibernate,对数据库资源访问这块好多概念模糊,所以在 ...

  4. jdbc和odbc

    JDBC简介 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,它是Java十三个规范之一.可以为多种关系数据库提供统一 ...

  5. JDBC、ODBC、OLE DB、ADO、ADOMD区别与联系

    ODBC: (Open Database Connectivity,开放数据库互连),它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口).这些API利用SQL来完成其大部分任务 ...

  6. DBMS ODBC JDBC是什么?

    昨天躺在被窝里面看了几页电子书,今天写下来. 数据库就是存放数据的仓库. DBMS的意思是数据库管理系统,作用就是“管理”数据库的.“管理”这两个字简单说来就是“增删改查”.所以DBMS就是能够对数据 ...

  7. Java系列之JDBC和ODBC之间的差别与联系

    JDBC简单介绍 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于运行SQL语句的Java API,它是Java十三个规范之中的一个.能够为多种关系数据 ...

  8. JDBC与ODBC

     ODBC(Open Database Connectivity)是一组对数据库访问的标准API,这些API通过SQL来完成大部分任务,而且它本身也支持SQL语言,支持用户发来的SQL.ODBC定义了 ...

  9. JDBC与ODBC的区别

    JDBC简介JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,它是Java十三个规范之一.可以为多种关系数据库提供统一访 ...

随机推荐

  1. Sysstat性能监控工具包中20个实用命令

    Sysstat性能监控工具包中20个实用命令 学习mpstat, pidstat, iostat和sar等工具,这些工具可以帮组我们找出系统中的问题.这些工具都包含了不同的选项,这意味着你可以根据不同 ...

  2. 为何visua studio看不到C++项目的LOG?

    最近工程中添加了一个用C++编写的项目 它作为了我正式使用项目的引用 但是当我debug的时候 居然没有看到应该有的LOG 最后找到了解决方法,如下图所示: 右击你的正式项目,属性 改变调试器类型中的 ...

  3. 电子科大POJ "孤单整数"

    孤单整数 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) C-sources: ...

  4. linux的7种运行级别<学习笔记>

    Linux系统有7个运行级别(runlevel) 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆 运行级别 ...

  5. hdu 1050 Moving Tables_贪心

    题意:你搬n个桌子,桌子从一个地方搬到另一个地方,走廊只允许同时一个桌子通过,教室分布在两边,奇数在一边,偶数在一边,当桌子不冲突时可以同时搬运,冲突时要等别的那个桌子搬完再搬. 思路:因为奇数桌子在 ...

  6. poj 3254 Corn Fields_状态压缩dp

    感谢:http://www.cnblogs.com/ka200812/archive/2011/08/11/2135607.html 让我搞懂了. #include <iostream> ...

  7. Linux磁盘及文件系统管理 3---- 文件系统

    1 文件系统 1 操作系统通过文件系统来管理文件及数据,磁盘或分区需要创建文件系统之后才能为操作系统使用,创建文件系统的过程称为格式化 2 没有文件系统的设备称为裸设备 3 常见的文件系统有fat32 ...

  8. html5 乒乓球(碰撞检测)

    演示地址 http://koking.8u.hanmandarin.com/html5/1.html 简单介绍 小球可以在方框内部自由运动 可以通过方向键控制黑色砖块上下左右移动去与小球发生碰撞 代码 ...

  9. -bash: ulimit: max user processes: cannot modify limit: Operation not permitted

    安装oracle时候在创建oracle用户后,切换oracle用户时,报如下错 [root@localhost ~]# su - oracle-bash: ulimit: max user proce ...

  10. document load 与document ready的区别

    页面加载完成有两种事件 1.load是当页面所有资源全部加载完成后(包括DOM文档树,css文件,js文件,图片资源等),执行一个函数 问题:如果图片资源较多,加载时间较长,onload后等待执行的函 ...