谈到JDBC与ODBC的区别,JDBC和ODBC其实都是用来连接数据库的启动程序。ODBC中文名字叫做开放数据库互联,是微软技术人员开发的开放服务结构中有关数据库的一个组成部分,它建立一组相关的规范,并提供了一组对数据库访问的标准应用程序编程接口。简单的说,ODBC就是应用程序与数据库系统进行交互的工具。一个给予ODBC的应用程序对数据库的操作不依赖于人员的数据库系统,不支持与数据库管理系统打交道,所有的数据库操作由对应的数据库系统的ODBC驱动程序来完成。从而可以实现以同一的方式来处理所有的数据库。

而JDBC与ODBC类似,也是一个应用程序与数据库进行通信的中介。只是他们的开发商不同而已。JDBC是由Sun公司向关系型数据库系统厂商提供JDBC的规格与需求;然后各大厂商遵循标准规格设计出符合自己数据库产品的JDBC驱动程序。虽然JDBC与ODBC都可以实现类似的功能,但是他们的开发架构不同,其实现细节上也有所差异。为此数据库管理员必须要了解这方面的差异,并在工作中根据实际情况来选择合适的数据库驱动程序。

JDBC与ODBC的区别:JDBC的优点。

JDBC应用程序接口是JAVA程序语言内针对数据存取所涉及的程序开发接口,其内部是由许多类与接口构成。而ODBC则是由C语言来开发的。由于两者开发平台的不同,为此开发不同种各自的特点也就传递到了这连个数据库启动程序中。根据笔者的了解,相对ODBC数据库启动程序来说,JDBC有如下几个优点。若笔者概括的不够全面的话,欢迎大家来补全。

1、JDBC要比ODBC容易理解。大家学过编程的也许会有一个直观的感受,就是JAVA语言要比C语言好学的多。因为JAVA语言的设计思路是面向对象的,跟人的认识思维比较接近,为此比较容易被人接受,学习起来也相对轻松一点。而C语言则就比较抽象了,跟人的认识规律有一定的距离。为此他们开发出来的产品也有类似的特点。在ODBC中,虽然可以实现与数据库的交互,但是实现起来比较复杂。如一个简单的查询,也需要分为好几块内容;而在ODBC驱动程序内部再去进行整合,进行一些复杂的操作。这不仅降低了数据库启动程序的性能,而且也给程序开发者开发应用程序带来了一定的负面影响。而JDBC数据库启动程序在设计的时候就包含了大部分基本数据操作功能,为此在编写一些常规的数据库操作语句时,如查询、更新等等,其所需要的代码比ODBC要少的多。故从这方面来说,JDBC数据库启动程序要比ODBC容易理解。

2、JDBC数据库驱动程序是面向对象的,完全遵循JAVA语言的优良特性。通常情况下,只要有JAVA车功能需设计基础的用户都可以在最短时间内了解JDBC驱动程序的架构,比较容易上手,可以轻而易举的开发出强悍的数据库应用程序。而ODBC的话,由于其内部功能复杂,代码编写要求高。为此即使是一个C语言的高手,仍然需要花费不少的时间去了解这个数据库启动程序;在编写代码的时候,还离不开相关的参考书籍。

3、JDBC的移植性要比ODBC要好。通常情况下,安装完ODBC驱动程序之后,还需要经过一定的配置才能够使用。而不同的配置在不同数据库服务器之间不能够通用。也就是说,装一次需要配置一次。但是JDBC数据库驱动程序则不同。如果采用JDBC数据库驱动程序的话,则知需要选择适当的JDBC数据库驱动程序,就不需要进行额外的配置。在安装过程中,JDBC数据库驱动程序会自己完成相关的配置。为此JDBC的移植性要比ODBC要好。

总之JDBC与ODBC都是数据库的启动程序,它们的本质是相同的,都是为了处理SQL语句而设计的。而且JDBC在设计的时候,其也是在ODBC的基础上进行设计的,并保留了ODBC数据库驱动程序的部分功能。或者说,我们可以把JDBC看作是ODBC的另一个高级版本也未尝不可。JDBC主要在操作上、友好性上做了一定的改进。

JDBC与ODBC的区别:什么时候采用JDBC?

虽然说JDBC数据库启动程序比ODBC来说具有不少的优点,但是也并不是说在所有的情况下采用JDBC数据库启动程序都能够起到不错的效果。数据库管理员还需要根据企业的实际应用环境来进行选择。通常情况下,如果符合下面几种情况的任何一种,笔者建议采用JDBC数据库驱动程序。

一是采用Oracle公司的Oracle JDeveloper 10G来开发应用程序。JDeveloper 10G是Oracle公司提供的一个可视化的开发环境。可以帮助数据库管理员与开发人员方便的完成一些复杂的功能。如数据库开发人员可以借这个工具来设计WEB应用程序的网页执行流程;如可以用来开发业务服务层组件;如可以在JSP与JClient应用程序内实现数据绑定功能等等。特别是在利用这个工具开发业务服务层组件的时候,可以直接浏览与存取业务组件所对应的数据。数据库开发人员不用等到应用程序撰写好后才测试数据库的存取功能。显然这个特性让数据库开发人员在开发数据库应用程序的时候格外的便利。而为了配合这个开发工具,Oracle公司专门开发了对应的JDBC驱动程序。为此如果数据库开发人员采用JDeveloper开发工具的话,那么采用JDBC要比采用ODBC的兼容性要好。所以如果采用了这种开发工具的话,最好能够采用JDBC数据库启动程序。

二是如果应用程序采用的是JAVA开发平台的话,那么最好使用JDBC数据库启动程序。其实JDeveloper采用的也是JAVA开发平台。这主要是因为如果JAVA程序直接调用ODBC的C语言应用程序接口时,比较容易产生安全方面的问题。如Java语言是不采用指针的(因为指针的处理效率比较慢),而ODBC所采用的C语言却使用了大量的指针。为此如果使用JAVA语言平台来开发数据库应用程序,若采用ODBC数据库驱动程序的话,就不那么合适了。另外由于JDBC也是JAVA语言开发的,所以其兼容性也会好许多。为此笔者建议,如果数据库开发人员采用的是JAVA语言开发平台的话,那么最好采用JDBC驱动程序,而不是ODBC驱动程序。

在其他的情况下,数据库管理员与开发人员可以根据自己的习惯来选择合适的数据库驱动程序。

JDBC与ODBC的区别:能否从ODBC顺利过渡到JDBC?

也许数据库管理员以前采用的是ODBC驱动程序,而如果数据库管理员现在需要采用JDBC驱动程序,那么能否实现顺利过渡呢?答案是肯定的。在JDBC驱动程序中有一类叫作JDBC-ODBC桥接启动程序。这种类型的JDBC数据库驱动程序其底层是通过ODBC驱动程序来连接数据库的。如果原先的应用程序是基于ODBC数据库驱动程序的,或者数据库没有提供对应的JDBC驱动程序,则数据库管理员可以利用JDBC-ODBC桥接驱动程序来实现。也就是说,桥接驱动程序可以利用现有的ODBC驱动程序来存取关系型数据库。为此者不仅可以保留先前的开发架构(通过ODBC来存取数据),还可以立即使用JAVA作为新的开发环境,从而实现ODBC数据库驱动程序到JDBC的顺利转型。

不过在采用这种桥接驱动程序的时候,需要注意几个问题。一是这个桥接驱动程序仍然需要用到ODBC数据库驱动程序。因为桥接驱动程序直接联系的对象是ODBC驱动程序,然后再通过ODBC驱动程序去访问数据库。为此在客户端必须先安装并配置好ODBC驱动程序。如果采用的是三层式的开发结构,也需要安装ODBC驱动程序。其次,在这种模式下,应用程序先调用JDBC,然后再通过JDBC调用ODBC,最后再跟数据库进行通信。显然其中间多了几个环节。由于其中间环节比较多,但数据访问出现问题的时候,就不怎么好查问题。这就好像一道水管,如果中间的接口多了的话,则发生漏水的几率就比较高。如果真的发生漏水的话,则查询漏水点的时候也会比较困难。为此笔者认为,采用桥接类型的JDBC驱动程序只是权宜之计。在适当的时候,数据库开发人员还是需要调整原先的开发架构,全部都转到JDBC驱动程序上来。桥接程序只是为数据库开发人员争取一定的时间。虽然这个转型过程中的阵痛是比较痛的,但确是不可避免的。长痛不如短痛,笔者建议数据库开发人员还是及早进行过渡为好。并在可能的情况下,把以前的开发架构也进行调整,以采用真正意义上的JDBC驱动程序。

原文出处:http://java.chinaitlab.com/JDBCJDO/898858.html

转载于:https://blog.51cto.com/quietboy/1333466

浅谈JDBC与ODBC的区别与应用相关推荐

  1. 浅谈jdbc和odbc的区别

    jdbc简介:Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数 ...

  2. 浅谈 JDBC 中 CreateStatement 和 PrepareStatement 的区别与优劣。

    浅谈 JDBC 中 CreateStatement 和 PrepareStatement 的区别与优劣.

  3. 浅谈 unix, linux, ios, android 区别和联系

    浅谈 unix, linux, ios, android 区别和联系 网上的答案并不是很好,便从网上整理的相对专业的问答. 1.UNIX 和 Linux UNIX 操作系统(尤尼斯), 是一个强大的多 ...

  4. 建造者模式浅谈 与工厂模式的区别

    感谢您的阅读.如果感觉文章对您有用,麻烦您动动手指点个赞,以资鼓励.谢谢! 转载请注明出处哈 建造者模式浅谈 与工厂模式的区别_茄子_土豆的博客-CSDN博客_建造者模式和工厂模式的区别 创建对象时构 ...

  5. c语言宽字符与wchar,浅谈c++ 字符类型总结区别wchar_t,char,WCHAR

    1.区别wchar_t,char,WCHAR ANSI:即 char,可用字符串处理函数:strcat( ),strcpy( ), strlen( )等以str打头的函数. UNICODE:wchar ...

  6. JDBC和ODBC的区别

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

  7. JDBC 与ODBC的区别

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

  8. JDBC与ODBC的区别与应用

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

  9. 浅谈Android各版本sdk区别

    转载地址:http://blog.csdn.net/itluochen/article/details/52688935 目录(?)[-] SDK目录 add-ons docs extras plat ...

最新文章

  1. 马云不会因支付宝事件走下神坛
  2. Windows 命令集合
  3. 关于最近公司裁员和加班的思考
  4. 『ACM-算法-二分法』算法竞赛进阶指南--在单调递增序列a中查找大于等于X的数中最小的一个,即X或X的后继
  5. ajax返回data穿多个值,如何通过ajax传递多个值?
  6. python的requests库安装失败_robot framework-requests库安装过程问题解决
  7. php windows环境 安装 Apache-apollo + phpMQTT 实现发送 MQTT
  8. Windws Server 2012 Server Backup(备份与还原)
  9. 多维数据查询效率分析(2)
  10. API接口自动化测试框架搭建(二)-详细设计框架设计
  11. IllegalStateException: Fragment already added
  12. 监控里的主码流和子码流是什么意思
  13. linux裁剪图片的软件,【美图秀秀Linux版】美图秀秀Linux版下载 v1.0.0.0 免费最新版-趣致软件园...
  14. 使用c语言实现复数运算的程序,用C语言实现的复数运算程序设计
  15. C#:实体框架EF(entity framework)
  16. 33.0 haproxy
  17. linux在没网的情况下安装libreoffice
  18. 无线通信中的“钻地术”——MESH自组网地铁透地无线通信
  19. 【python起床服务】播放起床铃+给老板发邮件辞职
  20. log是什么意思数学

热门文章

  1. [十一]基础数据类型之Character
  2. HDU 6092 Rikka with Subset 思维 递推
  3. ElasticSearch大数据分布式弹性搜索引擎使用
  4. iphone开发 ---- GPS
  5. C#线程系列讲座(1):BeginInvoke和EndInvoke方法
  6. 6. 简单又复杂的“运算符”,建议你看一哈
  7. Loadrunner11如何使用非IE浏览器录制脚本
  8. 源码篇——AsyncTask机制
  9. mysql 创建函数问题
  10. eclipse下tomcat配置