ODBC与JDBC比較

ODBC与JDBC比較

大家好,又见面了,我是全栈君。

     在学习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总的来说还是有很多其它的共同点

    比方,JDBCODBC都是基于X/OpenSQL调用级接口;

         从结构上来讲,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 风格与长处为基础并进行优化。因此更加易于使用。


        

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115902.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Ant类型之FilterChain

    Ant类型之FilterChainFilterChain 是一组 FilterReader 用户可以通过继承 java io FilterReader 类来定义自己的 FilterReader 通过使用 filterreader 元素可以轻松的将自定义的 FilterReader 做为嵌套元素插入到 filterchain 中 通过 FilterChain ant 可以灵活的进行数据的转换 支持 FilterChain 的 task 有 concat copy loadfile loadproperti move 过滤器链是通过嵌套 0 到多个过滤器形成的

    2025年7月15日
    3
  • linux kworker cpu,Kworker,它是什么,为什么它占用这么多 CPU?[通俗易懂]

    linux kworker cpu,Kworker,它是什么,为什么它占用这么多 CPU?[通俗易懂]问题:有时候它几乎使用一半的CPU。答案1:运行”kworker”是内核工作线程的占位符进程,它执行内核的大部分实际处理,尤其存在中断,计时器,I/O的情况下。答案2:在进程列表中可以有几个:kworker/0:1是第一个CPU内核,kworker/1:1是第二个。kworker为什么要占用你的CPU?echol>/proc/sysrq-trigger执行此操作几次,然后在dmesg…

    2022年9月24日
    4
  • MONTHS_BETWEEN函数「建议收藏」

    MONTHS_BETWEEN函数「建议收藏」 MONTHS_BETWEEN函数MONTHS_BETWEEN(x,y)用于计算x和y之间有几个月。如果x在日历中比y早,那么MONTHS_BETWEEN()就返回一个负数。注意:在调用MONTHS_BETWEEN函数时,日期的次序非常重要:如果想让结果为正数,稍晚的时间必须出现在前面。下面这个例子显示了2008年5月25日和2008年1月15日之间相差的月数。注意由于

    2022年7月12日
    27
  • drp错误集锦—“Cannot return from outside a function or method”

    drp错误集锦—“Cannot return from outside a function or method”

    2022年2月6日
    73
  • Java—Sort排序

    Java—Sort排序Java中Sort排序是非常常用的方法,这一章我们主要来认识一下Sort的用法和相关的实现。一、数组Sort排序升序排序,直接使用Arrays.Sort方法,例如:int[]array={10,3,6,1,4,5,9};//正序排序Arrays.sort(array);//会检查数组个数大于286且连续性好就使用归并排序,若小于47使用插入排序,其余情况使用双轴快速排序Sy…

    2022年7月12日
    22
  • vscode插件大全_vscode插件介绍

    vscode插件大全_vscode插件介绍vscode常用插件推荐及介绍

    2022年9月29日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号