首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ODBC和ADO.NET有什么区别?

问ODBC和ADO.NET有什么区别?
EN

Stack Overflow用户
提问于 2015-12-31 11:45:19
回答 2查看 16.5K关注 0票数 11

我正在开发一个新模块,它将通过.net 4.5.1连接到Oracle。

  1. 我应该使用ODBC还是ADO.NET,它们之间有什么区别?
  2. 我读到ADO.NET需要额外安装甲骨文客户端。在不安装附加模块的情况下,是否有任何方法使用API?
EN

回答 2

Stack Overflow用户

发布于 2016-01-03 22:32:49

ODBC是一个通用的、数据库无关的C API (http://dbpedia.org/resource/C_(programming_language%29)/C+/[C++](http://dbpedia.org/resource/C++)/[ObjectiveC](http://dbpedia.org/resource/Objective-C)-based连接到DBMS,也可以通过ODBC驱动程序管理器),它通常处理旧的和新的ODBC调用之间的转换和代码页/字符集之间的转换,然后通过DBMS特定的ODBC驱动程序将ODBC调用转换到DBMS特定的API和/或DBMS特定的客户层。

代码语言:javascript
复制
C/C+/C++-based tool
-> [optional] ODBC driver manager
   -> ODBC driver 
      -> DBMS libraries
         -> DBMS

ADO.NET是一个通用的、与数据库无关的API,用于C#(通过DBMS特定的ADO.NET提供者将ADO.NET API调用转换到DBMS特定的API和/或DBMS特定的客户端层到DBMS到DBMS的连接)。

代码语言:javascript
复制
C#-based tool
-> ADO.NET Provider
   -> DBMS libraries
      -> DBMS

(JDBC和OLE DB是相似的、与数据库无关的API,分别用于Java和可视化Basic-based到DBMS的连接。)

数据库供应商通常提供“复选框”(意思是“是的,我们有”) ODBC驱动程序和ADO.NET提供程序,以及JDBC驱动程序和/或OLE DB提供程序,它们不一定是性能最好、功能最完善的选项。

我的雇主生产高性能驱动程序和提供者组合,支持范围广泛的DBMS。;鼓励使用免费的两周评估许可证进行比较测试。“单层”选项通常要求DBMS客户端存在于同一主机上;“多层”选项通常在数据消耗主机上删除此要求。

基于C#的工具不能直接连接到ODBC驱动程序,但是它们可以使用用于ODBC数据源的ADO.NET提供程序来连接这些API。ODBC ADO.NET没有固有的速度优势,但是由于额外层的API转换,这种桥接解决方案有一些速度损失。

代码语言:javascript
复制
C#-based tool
-> ADO.NET Provider
   -> ODBC driver 
      -> DBMS libraries
         -> DBMS

(当您选择ODBC数据源作为C#编程项目的目标时,Microsoft的编程工具将使用Windows内置的ADO.NET到ODBC桥提供程序。我的雇主也生产这样的桥梁供应商,在许多情况下服务更好。)

票数 12
EN

Stack Overflow用户

发布于 2015-12-31 13:16:55

ODBC是一个通用的提供程序,ODBC驱动程序几乎可以用于任何数据源--甚至是简单的CSV-文件。

作为一个缺点,您的功能比ADO.NET少,而且(至少在理论上)性能更低。

ADO.NET更严格地连接到关系数据库。请注意,来自微软的Oracle是已弃用,您不应该将其用于新项目。

为了完整起见,还有第三个提供者名为OLE DB (参见命名空间System.Data.OleDb)。Oracle提供程序(msdaora)也是已弃用。甲骨文OraOLEDB.Oracle的提供者仍然完全支持。

对于到甲骨文的最先进的连接,您应该使用“oracleDataProviderfor.NET”(ODP.NET),您可以从这里下载它:64位Oracle数据访问组件(ODAC)下载。

所有ODBC、OLE DB和ODP.NET都需要安装Oracle。绕过它的唯一方法是使用"ODP.NET托管驱动程序“。您也可以从上面相同的位置下载它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34546025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档