Java系列之JDBC和ODBC之间的差别与联系
JDBC简单介绍
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于运行SQL语句的Java API,它是Java十三个规范之中的一个。能够为多种关系数据库提供统一訪问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准。据此能够构建更高级的工具和接口。使数据库开发者能够编写数据库应用程序,同一时候。JDBC也是个商标名。
ODBC简单介绍
开放数据库互连(Open Database Connectivity。ODBC)是微软公司开放服务结构(WOSA。Windows
Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库訪问的标准API(应用程序编程接口)。这些API利用SQL来完毕其大部分任务。
ODBC本身也提供了对SQL语言的支持。用户能够直接将SQL语句送给ODBC。开放数据库互连(ODBC)是Microsoft提出的数据库訪问接口标准。开放数据库互连定义了訪问数据库API的一个规范,这些API独立于不同厂商的DBMS,也独立于详细的编程语言(可是Microsoft的ODBC文档是用C语言描写叙述的,很多实际的ODBC驱动程序也是用C语言写的。)ODBC规范后来被X/OPEN和ISO/IEC採纳。作为SQL标准的一部分,详细内容能够參看《ISO/IEC
9075-3:1995 (E) Call-Level Interface (SQL/CLI)》等相关的标准文件。
两者之间的联系
JDBC和ODBC都是用来连接数据库的启动程序。JDBC和ODBC因为具有数据库独立性甚至平台无关性,因而对Internet上异构数据库的訪问提供了非常好的支持。
两者之间的差别
1.JDBC比ODBC更easy理解
从事编程工作的朋友都知道Java比C语言更好学,主要是由于Java语言是面向对象的更接近人的思维认识。更easy被人接受。而C语言就较为抽象,跟人的认识思维相差较大,其开发出来的产品也具有类似特点。在ODBC中一个的简单的查询。也需求分为好几块内容;而在ODBC驱动程序内部再去整合,做一些复杂的操作。这不仅减少了数据库启动程序的性能,并且也给程序开发人员开发实际运用程序带来了确定的负面效果。
而JDBC数据库启动程序在设计的时间就包括了大部份基本数据操作功能,为此在编写一些常规的数据库操作语句时,如查询、更新等等,其所需求的源码比
ODBC要少的多。故从这方面来说。JDBC数据库启动程序要比ODBC简易理解。
2.JDBC数据库驱动程序是面向对象的
JDBC全然遵循Java语言的优良特性。
通常情况下,仅仅要有Java功能需设计基础的用户都能在最短时间内了解JDBC驱动程序的架构,较量简易上手,能轻而易举的开发出强悍的数据库实际运用程序。
而ODBC的话。因为其内部功能复杂,源码编写要求高。为此即使是一个的C语言的高手,仍然需求花费不少的时间去了解那个数据库启动程序;在编写源码的时间,还离不开有关的參考书本。
3.JDBC的移植性要比ODBC要好。
通常情况下,安装完ODBC驱动程序之后。还需求经过确定的配置才可以应用。而不同样的配置在不同样数据库server之间不可以通用。也那是说,装一次需求配置一次。可是JDBC数据库驱动程序则不同样。
假如採用JDBC数据库驱动程序的话,则仅仅须要选取适当的
JDBC数据库驱动程序,就不须要额外的配置。在安装过程中,JDBC数据库驱动程序会自己完毕有关的配置。为此JDBC的移植性要比ODBC要好。
从ODBC向JDBC过度
或许数据库编程曾经採用的是ODBC驱动程序。而假如数据库编程眼下须要採用JDBC驱动程序,那么是否能出现顺利过渡呢?
答案是肯定的。
在JDBC驱动程序中有一类叫作JDBC-ODBC桥接启动程序。这样的类别的JDBC数据库驱动程序其底层是经过ODBC驱动程序来连接数据库的。
假如原先的实际运用程序是基于ODBC数据库驱动程序的,或者数据库没有帮助相应的JDBC驱动程序,则数据库编程能利用JDBC-ODBC桥接驱动程序来实现。也那是说。桥接驱动程序能利用现有的ODBC驱动程序来存取联系型数据库。为此者不仅能保留先前的开发架构(经过ODBC来存取数据),还能马上应用Java作为新的开发环境,从而出现ODBC数据库驱动程序到JDBC的顺利转型。
只是在採用这样的桥接驱动程序的时间,需求留意几个难点。一是那个桥接驱动程序仍然须要用到ODBC数据库驱动程序。
因为桥接驱动程序直接联系的对象是ODBC驱动程序。然后再经过ODBC驱动程序去訪问数据库。为此在client必需先安装并配置好ODBC驱动程序。假如採用的是三层式的开发框架,也需求安装ODBC驱动程序。其次,在这样的模式下。实际运用程序先调用JDBC,然后再经过JDBC调用ODBC。最后再跟数据库通信。
显然当中间多了几个环节。因为当中间环节较量多,但数据訪问出现难点的时候,就不太好查难点。这就好像一道水管,假如中间的接口多了的话,则除了漏水的几率就较量高。假如真的除了漏水的话。则查询漏水点的时间也会较量困难。为此笔者以为。採用桥接类别的JDBC驱动程序仅仅是权宜之计。在适当的时间,数据库开发还是须要调整原先的开发架构,所有都转到JDBC驱动程序上来。
桥接程序仅仅是为数据库开发争取确定的时间。尽管那个转型过程中的阵痛是较痛的,但确是不可避免的。长痛不如短痛,笔者意见数据库开发还是及早停止过渡为好。并在预计的情况下,把曾经的开发架构也停止调整,以採用真正意义上的JDBC驱动程序。
JDBC尽管在一定程度上比ODBC操作简单,easy理解。可是世间万物存在即有道理。并非说JDBC好就全部的情况下都能使用JDBC,两者之间没有好坏之分,仅仅是在特定的情况下可以选取合适的实现方式就可以。參考文章http://blog.sina.com.cn/s/blog_4cf8aad30100lx47.html(貌似博主是翻译过来的,好多字词用得不太合适,理解起来有些困难,本人结合自己的认识做了替换)个人的一点点认识和整理。有不足之处请大家批评指正。
Java系列之JDBC和ODBC之间的差别与联系的更多相关文章
- 【转】O'Reilly Java系列书籍建议阅读顺序(转自蔡学庸)
Learning Java the O'Reilly's Way (Part I) Java 技术可以说是越来越重要了,不但可以用在计算机上,甚至连电视等家电用品,行动电话.个人数字助理(PDA)等电 ...
- 关于JDBC和ODBC的区别
转载..... JDBC与ODBC都可以实现类似的功能,但JDBC与ODBC的区别是他们的开发架构不同,其实现细节上也有所差异. 谈到JDBC与ODBC的区别,JDBC和ODBC其实都是用来连接数据库 ...
- JDBC 与ODBC的区别
一.ODBC(Open DataBase Connectivity : 开放数据库连接) ODBC 总体结构 应用程序 执行处理并调用odbc函数,提交sql语 ...
- jdbc和odbc
JDBC简介 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,它是Java十三个规范之一.可以为多种关系数据库提供统一 ...
- JDBC与ODBC
ODBC(Open Database Connectivity)是一组对数据库访问的标准API,这些API通过SQL来完成大部分任务,而且它本身也支持SQL语言,支持用户发来的SQL.ODBC定义了 ...
- JDBC与ODBC的区别
JDBC简介JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,它是Java十三个规范之一.可以为多种关系数据库提供统一访 ...
- Java系列笔记(6) - 并发(上)
目录 1,基本概念 2,volatile 3,atom 4,ThreadLocal 5,CountDownLatch和CyclicBarrier 6,信号量 7,Condition 8,Exchang ...
- Java连接数据库 #02# JDBC经典套路
内容索引 LocalConnectionFactory.java LocalConnectionProxy.java ProfileDAO.java-2.0 ProfileDAOImpl.java-2 ...
- JAVA数据库编程(JDBC技术)-入门笔记
本菜鸟才介入Java,我现在不急着去看那些基本的语法或者一些Java里面的版本的特征或者是一些晋级的知识,因为有一点.Net的OOP编程思想,所以对于Java的这些语法以及什么的在用到的时候在去发现学 ...
随机推荐
- [转]RDLC 动态列
本文转自:http://blog.csdn.net/luochengbang/article/details/9964551 很久没有写博客了,关于动态列,国内很少资料有介绍动态列的,所想写点心得给哥 ...
- django-2的路由层(URLconf)
URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于客户端发来的某个URL调用哪一段逻辑代码 ...
- C#之考勤系统
闲来无聊,搞搞C#,下面就是我写的一个Demo 员工类 using System; using System.Collections.Generic; using System.Linq; using ...
- Tour UVA - 1347
John Doe, a skilled pilot, enjoys traveling. While on vacation, he rents a small plane and starts vi ...
- 关于SSL证书配置、升级的一些问题总结
SSL会成为网站.APP.小程序(小程序已经强制使用https)等项目的标配.关于SSL证书安装使用的问题今天总结下,以备用. 环境配置:windows server 2008 R2和IIS7.0 1 ...
- Intellij IDEA 2018.3.5版安装详解及破解
几个参考链接: 软件下载链接:https://www.jetbrains.com/idea/ 破解补丁:链接:https://pan.baidu.com/s/1xUbil5jq_DyTbXJWUUsM ...
- 【Oracle】进入sqlplus 删除键backspace时出现^H
当oracle进入sqlplus后,输入命令时候出现错误,我们按平时的习惯使用backspace键删除错误信息,此时会出现^H 解决办法:进入sqlplus之前,使用stty erase '^H'命令 ...
- 复习java基础第六天(IO)
一:File 类 • 输入:读取外部数据(磁盘.光盘等存储设备的数据)到程序(内存)中. • 输出:将程序(内存)数据输出到磁盘.光盘等存储设备中 • Java 的 IO 流主要包括输入.输出两种 ...
- Arduino DS18B20温度检测
一.实物图 注:电阻选取4.7k欧 二.事例代码 注:先下载Onewire库到arduino libraries目录下,然后就有例子 #include <OneWire.h> // One ...
- webpack学习(三)
前篇:webpack学习(二) jquery不需要在项目中自己下载,而是作为一个模块引入.jquery的存放路径是在 node_modules目录下.1.首先给项目安装jquery,npm insta ...