首页 > 其他分享 >odbc和jdbc的区别与联系

odbc和jdbc的区别与联系

时间:2023-04-30 15:02:16浏览次数:38  
标签:JDBC Java 驱动程序 区别 odbc 数据库 ODBC jdbc SQL


一、定义

  1.  ODBC (Ope Database Connectivity),开放数据库互联,是微软公司开发和定义的一套数据库访问标准,用户也可以直接将sql语句送给ODBC。通过使用ODBC,应用程序能够使用相同的源代码和各种各样的数据库进行交互。下面是ODBC应用系统的体系结构。
    一个基于ODBC的应用程序,对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。不论是SQL Server、Access还是Oracle数据库,均可用ODBC API进行访问。
    ODBC的最大优点是能以统一的方式处理所有的数据库
  2. JDBC(JavaDatabase Connectivity)是Java与数据库的接口规范,JDBC定义了一个支持标准SQL功能的通用低层API,它由Java 语言编写的类和接口组成,旨在让各数据库开发商为Java程序员提供标准的数据库API。
    JDBC API定义了若干Java中的类,表示数据库连接、SQL指令、结果集、数据库元数据等。它允许Java程序员发送SQL指令并处理结果。下图是JDBC的体系架构。

二、联系

JDBC是参考ODBC设计的,两者的相似性很多。

JDBC和ODBC都是用来连接数据库的启动程序,JDBC和ODBC由于具有数据库独立性甚至平台无关性,因而对Internet上异构数据库的访问提供了很好的支持。

JDBC与ODBC都是基于X/Open的SQL调用级接口;从结构上来讲,JDBC的总体结构类似于ODBC,都有四个组件:应用程序、驱动程序管理器、驱动程序和数据源,工作原理亦大体相同;在内容交互方面,JDBC保持了ODBC的基本特性,也独立于特定数据库。 而且都不是直接与数据库交互,而是通过驱动程序管理器。

三、区别

1. JDBC比ODBC更容易理解

这个主要是由语言特性决定的,ODBC用C来编写,JDBC用JAVA,C语言相比于JAVA更加抽象。另一方面是在ODBC中写一个查询,需要很多步骤,在JDBC中的数据库查询语句则简单很对,需求的源码比ODBC要少的多。JDBC数据库启动程序要比ODBC简易理解。

2. JDBC数据库驱动程序面向对象

JDBC用Java编写,完全遵循Java语言的优良特性。通常情况下,只要有Java功能需设计基础的用户都能在最短时间内了解JDBC驱动程序的架构,较量简易上手,能轻而易举的开发出强悍的数据库实际运用程序。而ODBC的话,由于其内部功能复杂,源代码编写要求高。为此即使是一个的C语言的高手,仍然需求花费不少的时间去了解那个数据库启动程序;在编写源代码的时间,还离不开有关的参考书本。

3. JDBC的移植性要比ODBC要好

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

标签:JDBC,Java,驱动程序,区别,odbc,数据库,ODBC,jdbc,SQL
From: https://blog.51cto.com/u_16093792/6237875

相关文章

  • 项目启动时数据库报错:com.mysql.cj.jdbc.exceptions.CommunicationsException: Commun
    项目启动时报错:com.mysql.cj.jdbc.exceptions.CommunicationsException:Communicationslinkfailure解决方法(转载):https://blog.csdn.net/lvoelife/article/details/129284611?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTR......
  • android有序广播和无序广播的区别
    BroadcastReceiver所对应的广播分两类:普通广播和有序广播。普通广播通过Context.sendBroadcast()方法来发送。它是完全异步的。所有的receivers接收器的执行顺序不确定。  因此,所有的receivers接收器接收broadcast的顺序不确定。这种方式效率更......
  • 08-react修改state数据驱动视图UI的更新【注意和vue的区别】
    //setState修改状态如果是直接修改页面不会改变使用setState修改数据才会驱动视图的改变//setState的原理:修改玩状态之后会调用render函数importReactDomfrom"react-dom"import{Component}from"react"//react状态不可变要重新创建状态,及覆盖原来的......
  • python-全双工,双工,单工的区别
    全双工(FullDuplex):通信允许数据在两个方向上同时传输,它在能力上相当于两个单工通信方式的结合。全双工指可以同时进行信号的双向传输半双工(HalfDuplex):数据可以在一个信号载体的两个方向上传输,但是不能同时传输。像全双工传输一样,半双工包含一个双向线路,两线制。单工:只允许甲......
  • C++用new创建的对象和不用new创建的对象的区别
     在C++中,使用new关键字来创建对象时,与不使用new关键字来创建对象时,会产生以下几个区别:内存管理:使用new关键字来创建对象时,由编译器来决定分配内存的方式,这样可以更有效地利用内存资源。而不使用new关键字来创建对象时,则需要手动分配内存,可能会浪费一些内存资源。对象生命周期......
  • chatGTP对webpack4与webpack5的区别的分析
    chatGTP对webpack4与webpack5的区别的分析问1:webpack5与webpack4主要的区别是什么?chatGTP的回答Webpack5与Webpack4的主要区别如下:性能优化:Webpack5在构建速度和性能方面进行了大量的优化,从而可以更快地构建应用程序和库。TreeShaking:Webpack5对TreeShaking进行了改进......
  • vue2源码-十七、Vue组件间传值的方式及之间区别
    Vue组件间传值的方式及之间区别通过props传递:父组件传递数据给子组件使用//chilid,vueprops:{//字符串形式name:String//接收的类型参数//对象形式age:{type:Number,//接收的类型为数值defaule:18,//默认值为18r......
  • java -- JDBC
    JDBCJDBC(JavaDataBaseConnectivity,java数据库连接)是一种用于执行SQL语句的JavaAPI。JDBC是Java访问数据库的标准规范,可以为不同的关系型数据库提供统一访问,它由一组用Java语言编写的接口和类组成。JDBC需要连接驱动,驱动是两个设备要进行通信,满足一定通信数据格式,数据格式由......
  • 虚拟文件系统和文件系统的区别和联系
    虚拟文件系统和文件系统是操作系统中的两个重要概念,它们有以下区别和联系:区别:文件系统是实际存储和管理文件的系统,而虚拟文件系统则是对文件系统的抽象和统一表示,使得应用程序可以不用考虑底层文件系统的细节。文件系统包含了文件的物理存储结构,而虚拟文件系统则是对文件的......
  • C++中函数重载和重写的区别是什么?
    函数重载:利用命名矫正(namemangling)技术,在编译时把函数名加上参数的首字母来区分同名函数。需要满足3个条件:1.同一个作用域下2.函数名相同3.函数参数类型不同,参数个数不同,参数顺序不同 示例:1......