`
Riancy007
  • 浏览: 118070 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

JDBC与ODBC之迷

阅读更多
自从开始接触数据库编程,就很想把数据库连接的驱动程序,接口之类的东西搞清楚,无奈这么久过去了,还是没有什么收获,今天闲来,在网上搜索了下,想把知道的点东西写下来。

首先应该搞清楚应用程序编程接口(ODBC,JDBC)产生的原因。
在市场上肯定不止一家公司在开发数据库管理系统,也不止一家公司开发操作系统,研发主板。然而他们的没有统一的标准,这就造成了程序员在编写程序访问数据库的时候,对于不同的硬件环境,不同的操作系统,不同的数据库管理系统就要编写不同数据库访问代码。这也就是所谓的异构数据库系统

对于支持SQL语言的异构数据库系统,JDBC和ODBC就提供了访问其异构成员的统一的方式。


ODBC

ODBC(Open DataBase Connectivity)是微软倡导的、当前被业界广泛接受的、用于数据库访问的应用程序编程接口(API),它以X/Open和 ISO/IEC的调用级接口(CLI)规范为基础,并使用结构化查询语言(SQL)作为其数据库访问语言。

它包括四个组件:
1,应用程序     执行并调用ODBC API函数,以提交SQL语句和检索结果。
2,驱动程序管理器     根据应用程序的需要加载/卸载驱动程序,处理ODBC函数调用,并把它送入驱动程序。
3,驱动程序       处理ODBC函数调用,并把SQL请求提交给一个指定的数据源,并返回结果集给应用程序。
4,数据源         包括要访问的数据及其相关的操作系统,DBMS及用于访问DBMS的网络平台。


ODBC驱动程序把应用程序从具体的数据库调用中隔离出来,驱动程序管理器针对特定数据库的各个驱动程序进行集中管理,并向应用程序提供统一的标准接口。

其实这些东西说白了,就是开发了一个中间件,将两个耦合度高的东西松开了。其实以前要写的访问不同数据库的东西现在都变成了不同的驱动程序而已。相当于把那些代码提出来以便重用。


JDBC

JDBC(Java DataBase Connectivity)是Java与数据库的接口规范,JDBC定义了一个支持标准SQL功能的通用低层的应用程序编程接口(API),它由Java 语言编写的类和接口组成,旨在让各数据库开发商为Java程序员提供标准的数据库API。

它也包括四个组件,而且其原理与ODBC是一样的。都是通过驱动程序管理器加载不同的驱动程序来访问不同的数据库系统。

不同之处在于:
ODBC是用C来写的,而JDBC是用JAVA来写的,这就造就了他们之间一个很大的不同。用JAVA写的JDBC具有很强的移植性,而ODBC不具备这种特性。

引用:
JDBC除了具有ODBC的上述特点外,更具有对硬件平台、操作系统异构性的支持。这主要是因为ODBC使用的是C语言,而JDBC使用的是Java语言。Java语言具有与平台无关、移植性强、安全性高、稳定性好、分布式、面向对象等众多优点,而JDBC确保了“100%纯Java”的解决方案,利用Java的平台无关性, JDBC应用程序可以自然地实现跨平台特性,因而更适合于Internet上异构环境的数据库应用。


相同之处:
除了原理相同外,JDBC和ODBC还有其他相同之处,下面的JDBC同样具有

ODBC是为最大的互用性而设计的,要求一个应用程序有用相同的源代码(不用重新编译或重新链接)访问不同的数据库管理系统(DBMS)的能力,这体现了 ODBC的数据库独立性。


对数据库特殊功能的支持

各个DBMS参照的标准、提供的功能不尽相同,应用程序如何以统一的接口使用各个DBMS特有的功能呢?

一方面,ODBC为所有DBMS功能都定义了公共接口。这些DBMS功能比多数DBMS支持的更多,但只要求驱动程序实现这些功能的一个子集。
另一方面,ODBC定义了API和SQL语法一致层,它规定驱动程序应支持的基本功能。 ODBC还提供两个函数(SQLGetInfo和SQLGetFunctions)返回关于驱动程序和DBMS能力的一般信息及驱动程序支持的函数列表。因此,应用程序可以检查DBMS支持的特殊功能。
这样,编写应用程序时,就可以检查并自动使用各个驱动程序对应的DBMS所支持的特殊功能。这样做的优点是当增加DBMS支持的功能时,应用程序不需要改变,只需安装更新的驱动程序,应用程序便可以自动发现并使用这些功能。


互操作能力

----通过使用多个驱动程序可以同时访问多个DBMS系统。 ODBC提供的Driver Manager实现所有的ODBC函数,多数是传递调用给驱动程序中的ODBC 函数,并静态链接应用程序,或在应用程序运行时加载它。这样,应用程序在Driver Manager 中按名调用驱动ODBC函数,而不是通过每个驱动程序中的指针。当应用程序需要通过特定的驱动程序时,它首先需要一个标识驱动程序的连接句柄。Driver Manager加载驱动程序,并存储每个驱动程序中的函数地址。要使驱动程序调用一个ODBC函数,可在应用程序调用 Driver Manager中的函数,并为驱动程序传送连接句柄,然后Driver Manager使用以前存储的地址来调用函数。

----ODBC可以同时连接到多个DBMS,解决了同时访问多个DBMS的问题,提供了异构成员数据库之间互操作的能力。




JDBC和ODBC在Internet上的应用
 

----JDBC和ODBC由于具有数据库独立性甚至平台无关性,因而对Internet上异构数据库的访问提供了很好的支持。

----在Internet上访问数据库通常采用三层模式。以JDBC为例,在三层模式中客户端的Java Applet主要作为用户界面,它不直接与数据库交换信息,而是通过自定义的应用层网络协议与应用服务器交互,应用服务器通过JDBC与数据库服务器交换信息,并实现应用逻辑。DM3的JDBC和ODBC驱动程序支持目前流行的ASP和JSP技术,可以分别借助ODBC和JDBC同时访问Internet上多个异构的数据库。

----ASP是面向Web服务器的技术,客户端浏览器不需要任何附加的软件支持。ASP使用VBScript之类的脚本语言,它在HTML代码中嵌入某种程序代码,由HTML代码负责描述信息的显示样式,由嵌入的程序代码来描述处理逻辑。在ASP 下,VBScript代码被ASP引擎在Web服务器端解释执行,执行结果被重新嵌入到HTML代码中,然后一起发送给浏览器。这里,VBScript代码可以通过ODBC访问多个异构的数据库。

----JSP是一种基于Java Servlet的Web开发技术,它和ASP 非常相似,但又有区别:在JSP下,嵌入HTML页面的程序代码是Java代码;页面中嵌入的程序代码被编译成Servlet(这种编译操作仅在对JSP页面的第一次请求时发生)并由Java 虚拟机执行。这里Java代码可以通过JDBC访问多个异构的数据库,其平台无关性特别好。当前,Internet上的数据库应用已越来越多,JDBC和ODBC必将在Internet上的异构数据库访问中发挥重要的作用。



分享到:
评论

相关推荐

    sun.jdbc.odbc.JdbcOdbcDriver.zip

    JDBC-ODBC桥的工作原理是:当Java应用程序使用JDBC API来连接数据库时,JDBC-ODBC桥会将这些JDBC调用转换为ODBC调用,然后由ODBC驱动程序进一步转换为数据库特定的协议,从而实现与数据库的交互。这种方法的优点在于...

    sun.jdbc.odbc.jdbcodbcdriver-Maven.zip

    JDBC-ODBC桥接驱动是四种JDBC驱动类型之一(类型4:纯Java驱动,类型3:网络协议驱动,类型2:数据库厂商提供的部分Java驱动,类型1:JDBC-ODBC桥)。它是Java初学者学习JDBC时常见的起点,因为它不需要数据库特定的...

    JDBC-ODBC BRIDGE PATCH for JDK 1.6/1.7 64bit

    SUN JDK 1.6/1.7 64bit的JDBC-ODBC Bridge有个缺陷:会随机抛出异常如下,在所有的ODBC Driver上。 java.sql.SQLException: [Microsoft][ODBC Driver Manager] Invalid string or buffer length at sun.jdbc.odbc....

    jdbc-odbc.zip_jdbc-odbc download

    Java数据库连接(JDBC)是Java编程语言中用于与各种数据库进行交互的一组接口和类。JDBC-ODBC桥是JDBC最初提供的一种连接数据库的方式,它允许Java应用程序通过ODBC(Open Database Connectivity)来访问数据库。...

    JDBC和ODBC的区别

    标题和描述中提到的知识点主要围绕着JDBC与ODBC的区别以及它们的应用场景。下面将对这些知识点进行详细的解析。 ### JDBC与ODBC的基本概念 #### JDBC(Java Database Connectivity) JDBC是Java语言中用于连接...

    sun.jdbc.odbc.JdbcOdbcDriver下载

    jdbc-odbc驱动包,提示找不到驱动,java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver, 原因:从jdk从1.8开始,删除了jdbc-odbc桥,所以odbc的驱动是用不了的 解决方法:这里为提供一个解决JDK1.8不...

    sun.jdbc.odbc.jdbcodbcdriver驱动包

    jdbc-odbc驱动包,提示找不到驱动,java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver, 原因:从jdk从1.8开始,删除了jdbc-odbc桥,所以odbc的驱动是用不了的 解决方法:提供一个解决JDK1.8不能连接...

    sun.jdbc.odbc.JdbcOdbcDriver.jar.7z

    jdbc-odbc驱动包,提示找不到驱动,java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver,解决办法!因为jdk1.8环境不支持sun.jdbc.odbc.JdbcOdbcDriver驱动,所以这里为特别为您提供一个解决JDK1.8不...

    jdbc-odbc桥数据库连接及jdbc和odbc连接字符串.doc

    ODBC(Open Database Connectivity)是微软提供的一种数据库访问标准,它允许应用程序与各种数据库系统进行交互。在Java环境中,由于JDBC并不直接支持所有类型的数据库,JDBC-ODBC桥就充当了一个中间层,使得Java...

    Easysoft JDBC-ODBC Bridge_jdbc_java_odbc_database_methodcpo_

    【Easysoft JDBC-ODBC Bridge】是一款用于连接Java应用程序与ODBC数据源的桥梁,它使得Java应用程序能够通过JDBC接口访问ODBC兼容的数据库。Easysoft JDBC-ODBC Bridge支持32位和64位操作系统,确保了跨平台的兼容性...

    sun.jdbc.odbc.JdbcOdbcDriver.jar

    jdbc-odbc驱动包,提示找不到驱动,java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver,解决办法!因为jdk1.8环境不支持sun.jdbc.odbc.JdbcOdbcDriver驱动,所以这里为特别为您提供一个解决JDK1.8不...

    JSP通过JDBC-ODBC桥接器访问数据库Mysql。

    JSP 通过 JDBC-ODBC 桥接器访问数据库 Mysql JSP 通过 JDBC-ODBC 桥接器访问数据库 Mysql 是一个常见的应用场景,本文档将详细介绍如何实现 JSP 通过 JDBC-ODBC 桥接器访问数据库 Mysql。 首先,需要安装和配置...

    JDBC and ODBC

    ### JDBC (Java Database Connectivity) 和 ODBC (Open Database Connectivity) #### JDBC概述 JDBC,即Java Database Connectivity(Java数据库连接),是一种用于Java程序与多种数据库交互的技术标准。它为Java...

    使用JDBC-ODBC桥连接数据库

    - **兼容性**:确保ODBC驱动程序与JDBC-ODBC桥的版本兼容。 - **安全性**:避免硬编码数据库用户名和密码,最好使用环境变量或配置文件。 综上所述,JDBC-ODBC桥虽然在某些情况下可以作为一种解决方案,但在现代的...

    jdbc.odbc桥方式连接 经典

    JDBC-ODBC桥是一种利用ODBC驱动程序来实现Java应用程序与数据库之间的通信的方式。这种方式通过将JDBC调用转化为ODBC调用,再由ODBC驱动程序处理这些调用,从而实现了Java应用程序与数据库的连接。 #### 三、环境...

    JDBC-ODBC连接数据库

    在Java编程领域,JDBC(Java Database Connectivity)是用于与各种数据库进行交互的标准接口,而ODBC(Open Database Connectivity)是一种通用数据库访问接口。当在JSP(Java Server Pages)中处理数据库操作时,...

    JDBC-ODBC使用Excel作数据源

    为了能够方便地使用Java应用程序来读取这些Excel数据,我们可以利用JDBC(Java Database Connectivity)与ODBC(Open Database Connectivity)桥接技术来实现这一目标。本文将以具体实例介绍如何通过JDBC-ODBC桥接...

    JDBC 与ODBC简介

    与JDBC类似,ODBC也提供了统一的API,使得开发者可以编写一次代码,应用于多种数据库系统。 **JDBC工作原理:** 1. **加载驱动**:在Java程序中,我们需要通过`Class.forName()`方法加载特定数据库的JDBC驱动。 2. ...

    JDBC_ODBC连接

    当我们将JDBC与ODBC结合使用时,Java应用可以通过ODBC桥接来连接到Oracle数据库。 首先,我们需要在操作系统上配置ODBC数据源。这通常在“ODBC数据源管理器”中完成,这里会添加Oracle数据库的ODBC驱动。设置完成后...

    jdbc和odbc的区别

    ODBC(Open Database Connectivity)和JDBC(Java Database Connectivity)都是数据库访问的接口,它们提供了标准的方法让应用程序与各种数据库进行交互。虽然两者都基于X/Open的SQL调用级接口,但它们的设计、实现...

Global site tag (gtag.js) - Google Analytics