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之间的差别与联系的更多相关文章

  1. 【转】O'Reilly Java系列书籍建议阅读顺序(转自蔡学庸)

    Learning Java the O'Reilly's Way (Part I) Java 技术可以说是越来越重要了,不但可以用在计算机上,甚至连电视等家电用品,行动电话.个人数字助理(PDA)等电 ...

  2. 关于JDBC和ODBC的区别

    转载..... JDBC与ODBC都可以实现类似的功能,但JDBC与ODBC的区别是他们的开发架构不同,其实现细节上也有所差异. 谈到JDBC与ODBC的区别,JDBC和ODBC其实都是用来连接数据库 ...

  3. JDBC 与ODBC的区别

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

  4. jdbc和odbc

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

  5. JDBC与ODBC

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

  6. JDBC与ODBC的区别

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

  7. Java系列笔记(6) - 并发(上)

    目录 1,基本概念 2,volatile 3,atom 4,ThreadLocal 5,CountDownLatch和CyclicBarrier 6,信号量 7,Condition 8,Exchang ...

  8. Java连接数据库 #02# JDBC经典套路

    内容索引 LocalConnectionFactory.java LocalConnectionProxy.java ProfileDAO.java-2.0 ProfileDAOImpl.java-2 ...

  9. JAVA数据库编程(JDBC技术)-入门笔记

    本菜鸟才介入Java,我现在不急着去看那些基本的语法或者一些Java里面的版本的特征或者是一些晋级的知识,因为有一点.Net的OOP编程思想,所以对于Java的这些语法以及什么的在用到的时候在去发现学 ...

随机推荐

  1. RabbitMQ 官方NET教程(二)【工作队列】

    这篇中我们将会创建一个工作队列用来在工作者(consumer)间分发耗时任务. 工作队列的主要任务是:避免立刻执行资源密集型任务和避免必须等待其完成.相反地,我们进行任务调度:我们把任务封装为消息发送 ...

  2. PHP开发笔记(三)关于PHP伪静态的问题总结

    Apache 第一个问题就是关于PHPStudy集成Apache环境下5.5版本以上”No input file specified“问题. 针对TP5框架,以下是.htaccess文件的配置,PHP ...

  3. JavaScript变量提升及作用域

    今天在知乎看前端面试题的时候,看到这样的问题,发现自己懂的真的是太少了,看了给的例子,所以写一下自己的理解. 首先放一段代码: var v= “hello JavaScript”; alert(v); ...

  4. 《java数据结构与算法》系列之“开篇”

    大学的时候学习数据结构,当时吧虽然没挂这门课,但是确实学的不咋地,再但是其实自己一直都觉得数据结构很重要,是基础,只有基础好了,后面的路才能走的更好. 懒惰真的是天下的罪恶之源.所以一直到现在都毕业了 ...

  5. POJ 1000

    #include <iostream> int main() { using std::cin; using std::cout; using std::endl; int a,b; ci ...

  6. JavaOO小结二,及MySQL小结

    流按照传输内容分有几种?各自的父类是什么? 流按照传输内容有 字节流.字符流.对象流.但其本质都是字节流.字符流和对象流是在字节流基础上作了一层封装,以便更好对字符和对象进行操作. 字节流的父类:In ...

  7. AI: DL方法与问题空间探索

    所谓问题的解决是生存参数空间的一种状态转移到另外一种状态,而目的状态恰好是主体所希望的.完成这种转换的一系列脚本变化过程叫做场景序列,也叫通路.驱动这一些列场景转换的主体参与过程,被称为主动执行.而主 ...

  8. 【sqli-labs】 less10 GET - Blind - Time based. - Double quotes (基于时间的双引号盲注)

    这个和less9一样,单引号改完双引号就行了 http://localhost/sqli/Less-10/?id=1" and sleep(5)%23 5s后页面完成刷新 http://lo ...

  9. Why use Cache-Control header in request?

    本地缓存也是缓存代理的一部分. 请求时使用Cache-Control 表示缓存的使用策略. 请求头里的no-cache表示浏览器不想读缓存,并不是说没有缓存.一般在浏览器按ctrl+F5强制刷新时,请 ...

  10. 单链表每k个节点一组进行反转(最后不足k个也反转)

    一道面试题,第一次碰到这道题的时候 要求10分钟之内手写代码实现,当时没写出来,后来花点时间把过程梳理一遍,也挺简单的....... 思路就是在原来单链表反转的基础上,加几个控制参数,记录几个关键节点 ...