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的这些语法以及什么的在用到的时候在去发现学 ...
随机推荐
- HDU 4901 DP
我觉得这个DP挺难的...然而这只是lydrainbowcat学长幻灯片上的第一题-- 明天考试要GG. 题意: 给你一个序列,让你选出两个集合S和T.保证S里的数都在T里的数的左边.求一共有多少个集 ...
- fontSpider字蛛,好用的字体压缩工具教程
一直觉得很多字体特别好看,但是那些好看的字体只能做在图片上不能用CSS样式去实现,作为一个会设计的前端,真心觉得很烦恼,有时候那些文字需要更换,修改起来非常麻烦,要到处去找源文件,找不到源文件还要尽力 ...
- JavaScript 原型和引用趣点
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head ...
- reduce多种方法计算数组中某个值的出现次数
先来了解下reduce用法 arr.reduce(callback[, initialValue]) callback执行数组中每个值的函数,包含四个参数: accumulator 累计器累计回调的返 ...
- 后端springmvc,前端html5的FormData实现文件断点上传
前言 最近项目中有使用到文件断点上传,得空便总结总结,顺便记录一下,毕竟“好记性不如烂笔头”. 后端代码: package com.test.controller; import java.io.Bu ...
- Android,加载离线Android API文档缓慢问题!
解决方法:在host文件末添加如下信息! 0.0.0.0 www.googleapis.com 0.0.0.0 www.google.com 0.0.0.0 www.google-analytics. ...
- angualr2之路由与导航(一)
1. 唯一根模块式组件导航 在唯一根模块式组件导航中,全局只有一个模块,即根模块. 1.1 根模块 在根模块中,需要导入所有组件及其对应的服务,并将组件加入声明,将其对应的服务加入提供商. // ap ...
- MongoDB安装使用教程
参考菜鸟教程:http://www.runoob.com/mongodb/mongodb-tutorial.html
- 复习java基础第二天(异常处理)
一.常见的异常类型: public class TestException { public static void main(String[] args) { int i = 10; //数学异常: ...
- 利用VMware14安装虚拟机(Win7&CentOS6.4)
安装Win7 https://blog.csdn.net/Yangchenju/article/details/80694597 安装CentOS6.4 https://blog.csdn.net/u ...