数据库连接方式各式各样,如何取舍,如何区分? 让人很是迷惑,只有理解各种方式异同后,方能做出正确选择。

1. 如何理解?

最早:数据库编程都是直接操作数据库厂商提供的API,每个数据库厂商的提供的数据库操作的API都不相同,如调用函数,操作语句等等。因此每个应用程序都只能对应一个数据库。如果想换数据库,需要重写一遍数据库操作代码,这样的代价是非常大的。

  后来:微软开发的ODBC结束了直接调用数据库API进行数据库操作的方式.ODBC将所有数据库特定的,底层的操作细节(CLI)封装在驱动(drive)中,并提供一套标准的函数调用。使用时,ODBC会动态地加载数据库的CLI,将函数调用转换成各个数据库的CLI调用。这样应用程序与数据库API本身就隔绝开了,如下图所示。这样访问所有的关系型数据库都可以使用一套标准的ODBC API即可。ODBC成为最早的通用数据库访问技术。

再后来:随着面向对象的技术的发展,微软又推出了OLE DB。 在OLE DB中,将不会有drive的概念,取而代之的是提供者(provider),每个数据库厂商都需要对象的OLE DB provider。需要注意的是,provider实现了基于COM的接口,这些接口封装了访问数据库的操作细节(CLI)。那么应用程序使用这些通用的接口来进行数据库的访问,而不用考虑数据库的细节。所以,可以理解OLE DB是规定了数据使用者和提供者之间达成了一种协议。请参考下图。    

前面所述的是提供了provider的数据库。为了兼容一些没有提供provider的数据库,OLEDB也可以基于ODBC,即provider是基于ODBC实现的。这种实现会经过两层,效率会比较低。由于目前大多数数据库都提供了provider,所以这种方式比较少见。 可以看到,OLE DB与ODBC类似,但是原理上是不相同的。还有一点就是,ODBC只支持关系型数据库,而OLE DB除了关系型数据库外,还支持Excel等。

  再再后来,微软为了简化OLE DB接口,推出了ADO来封装OLE DB的接口,实现与数据库的通信,使得用户更易于调用数据库相关操作。随着.NET推出,微软进一步进行升级ADO为ADO.NET。

JDBC跟上面几种数据库连接技术不太相同,它是面向JAVA的,是种用于执行SQL语句的Java API。下面会详细阐述JDBC与其他几种技术的异同。

2. odbc vs jdbc

   1/ ODBC 是采用C语言开发的,而JDBC是由JAVA语言开发的,那么在易用性上,JDBC将更加简单。ODBC API比较繁琐,而且不易使用。

   2/ ODBC在使用时,需要进行一定的配置才能使用,如windows上在控制面板中配置ODBC数据源等,而JDBC不需要,只需在编码时,指定相关的配置即可。

 3/ JDBC提供了一种JDBC-ODBC桥接的驱动程序,用于移植ODBC程序到JDBC上,这种方式效率会受影响,一般建议直接用JDBC重写数据库操作。

3. ado.net vs jdbc

(请参考http://www.cnblogs.com/jobs/archive/2004/07/28/27870.aspx)

从选择的角度上来看,这两种数据库操作方式比较其实是.NET平台和JAVA平台的比较,依赖与应用程序本身采用哪种平台。如果是JAVA应用,则首选JDBC,如果是.NET应用程序,首选ADO.NET。从应用的角度上来看,两者也有一些差别:

   1/ ADO .NET最大的优点是对断开连接访问数据库方式的强有力支持。相比起来,JDBC也引入类似的功能,RowSet,但是比起ADO .NET来,还是不够/

   2/ ADO .NET功能不完整。MS对这一点也是承认的,承认ADO .NET不能替代ADO。其中一个很重要的功能是分页访问数据的支持。以前在开发ADO .NET程序时,还专门编写一个程序,调用ADO,分页获取数据。

 3/ 跨平台性上,JDBC更好。因为JDBC是一个规范,是一个标准,而ADO .NET只是微软的私家类库。.NET Framework目前成为标准的类库还只有一小部分。

比较ole db/odbc/ado/ado.net/jdbc相关推荐

  1. OLE DB , ODBC , ADO 知识了解

    ADO (ActiveX Data Objects) . ADO 是 VB6 推荐操作数据库的方式 . 提供了编程语言和统一数据访问方式OLE DB 的一个中间层. 包括了六个类: Connectio ...

  2. ssms 连接 ssis_SSIS连接管理器:OLE DB,ODBC,ADO.NET

    ssms 连接 ssis In this article, I will first give an overview of the OLE DB, ODBC, and ADO.NET SSIS co ...

  3. ADO/ADO.NET

    引用一.ADO 与ADO.NET两种数据访问方式区别? 1. ADO与ADO.NET简介 ADO与ADO.NET既有相似也有区别,他们都能够编写对数据库服务器中的数据进行访问和操作的应用程序,并且易于 ...

  4. JDBC、ODBC、OLE DB、ADO、ADOMD区别与联系

    ODBC: (Open Database Connectivity,开放数据库互连),它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口).这些API利用SQL来完成其大部分任务 ...

  5. ADO、DAO、ODBC、RAO和OLE DB等概念及异同

    一:概念介绍 1.ADO ADO 并不是自动和您现存的数据访问应用程序代码兼容的.当 ADO 封装 DAO 和 RDO 的功能性的时候,您必须将许多语言要素转换为 ADO 语法.在某些情况下,这将意味 ...

  6. mysql的ole db 访问接口msdasql的数据源对象_数据库访问接口(ODBC,OLEDB,ADO)

    目录 数据库访问接口发展历史 ODBC历史 ODBC(Open Database Connectivity,开放数据库互连).要了解ODBC是什么,先了解一下数据库连接的相关知识.在最开始连接数据库时 ...

  7. 一致的数据访问技术ADO/OLE DB

    Microsoft新近推出的UDA(Universal Data Access,一致数据访 问技术)为关系型或非关系型数据访问提供了一致的访问接口,为企业 级Intranet应用多层软件结构提供了数据 ...

  8. [ADO.NET] 如何 使用 OLE DB 讀寫 Excel / 建立 Excel 檔案 (一)

    1.OLE DB的連線字串如下: //連線字串string cs ="Data Source=" + FileName + ";" +"Provide ...

  9. ADO,ADO.NET,OLEDB,ODBC连接数据库的区别

    一. ADO ADO (ActiveX Data Objects) 是一個用於存取數據源的COM組件.它提供了程式語言和統一數據訪問方式OLE DB的一個中間層.允許開發人員編寫訪問數據的代碼而不用關 ...

  10. ODBC OLEDB ADO等数据库访问技术

    花了点时间理了一下数据库访问技术相关的东西,一般地,一个数据库产品的发布后,相应地,会为开发者提供一套访问改数据库的接口,比如MySql提供的C API,可以通过这些数据库产品本身的API进行数据库操 ...

最新文章

  1. ionice使用说明与参数详析
  2. Algorithm之PGM之BNet:贝叶斯网络BNet的相关论文、过程原理、关键步骤等相关配图
  3. python简单菜单_创建一个简单的python菜单
  4. python网络编程学习笔记(4):域名系统
  5. Realme真我X7系列首发骁龙860? 副总裁辟谣:大家散了吧
  6. 彰显城市等级的最典型代表,商业综合体城市PSD海报素材
  7. UVA-Parentheses Balance
  8. Coinbase是如何在其加密货币交易平台上应对扩展性挑战的
  9. html背景图片半透明遮罩,巧用CSS cross-fade()实现背景图像半透明效果
  10. SpringBoot下DataSource连接配置
  11. 【论文笔记】 Synthesizing Robust Adversarial Examples
  12. 概率论在实际生活的例子_日常生活中的概率统计
  13. 笔记本键盘输入错乱,字母都变成数字了
  14. 汉字Unicode表
  15. 【弹子兵法】四国军棋棋盘、棋子与记谱【基础篇】
  16. arima模型 白噪声检验_白噪声模型
  17. 【第五章】零基础学Python实战练习(明日科技书配套)
  18. qpsk的映射过程_(完整版)QPSK调制原理及matlab程序实现
  19. 赵小楼《天道》《遥远的救世主》深度解析(61)丁元英和芮小丹的“着相”与“不着相”
  20. NET酒店宾馆客房管理系统源码

热门文章

  1. mysql可以用except吗_MYSQL 支持EXCEPT语句吗? 例子里EXCEPT后面的换成NOT IN可以吗? 两个例子错在哪里啊?...
  2. python docx table 边框_使用pythondocx指定表中的边框外观
  3. 区分大小屏幕_新GL8陆尊30多万,四块屏幕,科技感堪比奔驰,你还选埃尔法吗?...
  4. 大多数微型计算机都是基于,基于PCI总线数据采集系统的设计
  5. combox控件触发事件_dom事件
  6. c++ opengl 绘制地面_铝合金门窗设计之绘制节点图
  7. birt字体 linux,linux下birt 图表中文乱码问题
  8. oracle 字段和当前时间比较,请教如何按照当前时间与数据库表中的字段时间比较提取记录,涉及跨天...
  9. tensorrt 分割_超多,超快,超强!百度飞桨发布工业级图像分割利器PaddleSeg
  10. 毕设一:python 爬取苏宁的商品评论