ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
https://zh.wikipedia.org/wiki/ODBC # ODBC\[[编辑](https://zh.wikipedia.org/w/index.php?title=ODBC&action=edit&section=0&summary=/*%20top%20*/%20 "编辑首段")\] 维基百科,自由的百科全书 [跳到导航](https://zh.wikipedia.org/wiki/ODBC#mw-head)[跳到搜索](https://zh.wikipedia.org/wiki/ODBC#p-search) **ODBC**(**Open Database Connectivity**,开放数据库互连)提供了一种标准的[API](https://zh.wikipedia.org/wiki/%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E6%8E%A5%E5%8F%A3 "应用程序接口")([应用程序编程接口](https://zh.wikipedia.org/wiki/%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E7%BC%96%E7%A8%8B%E6%8E%A5%E5%8F%A3 "应用程序编程接口"))方法来访问[数据库管理系统](https://zh.wikipedia.org/wiki/%E6%95%B0%E6%8D%AE%E5%BA%93%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F "数据库管理系统")(DBMS)。这些API利用[SQL](https://zh.wikipedia.org/wiki/SQL "SQL")来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。ODBC的设计者们努力使它具有最大的独立性和开放性:与具体的编程语言无关,与具体的数据库系统无关,与具体的操作系统无关。 ## 目录 * [1历史](https://zh.wikipedia.org/wiki/ODBC#%E5%8E%86%E5%8F%B2) * [2实现](https://zh.wikipedia.org/wiki/ODBC#%E5%AE%9E%E7%8E%B0) * [3参考文献](https://zh.wikipedia.org/wiki/ODBC#%E5%8F%82%E8%80%83%E6%96%87%E7%8C%AE) * [4外部链接](https://zh.wikipedia.org/wiki/ODBC#%E5%A4%96%E9%83%A8%E9%80%A3%E7%B5%90) * [5参见](https://zh.wikipedia.org/wiki/ODBC#%E5%8F%82%E8%A7%81) ## 历史\[[编辑](https://zh.wikipedia.org/w/index.php?title=ODBC&action=edit&section=1 "编辑章节:历史")\] 在ODBC诞生之前,如果要开发[数据库](https://zh.wikipedia.org/wiki/%E6%95%B0%E6%8D%AE%E5%BA%93 "数据库")[应用程序](https://zh.wikipedia.org/wiki/%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F "应用程序"),则必须要使用数据库厂商随数据库产品一同发布的一些工具集来访问数据库,或者在程序中使用[嵌入式SQL](https://zh.wikipedia.org/wiki/%E5%B5%8C%E5%85%A5%E5%BC%8FSQL "嵌入式SQL")来访问数据库。当时,对于访问数据库的方法,缺乏一个基于[C语言](https://zh.wikipedia.org/wiki/C%E8%AF%AD%E8%A8%80 "C语言")的统一编程接口。在这种背景下,微软于1992年发表了**ODBC**。之后,[X/Open](https://zh.wikipedia.org/wiki/X/Open "X/Open")组织以及[ISO](https://zh.wikipedia.org/wiki/ISO "ISO")标准化组织基于ODBC 3.0的规范,进一步进行了标准化,于1995年发表了[SQL/CLI](https://zh.wikipedia.org/w/index.php?title=SQL/CLI&action=edit&redlink=1 "SQL/CLI(页面不存在)")标准。该标准已经成为了[SQL标准](https://zh.wikipedia.org/w/index.php?title=SQL%E6%A0%87%E5%87%86&action=edit&redlink=1 "SQL标准(页面不存在)")的一部分。 版本历史: * ODBC 1.0:发表于1992年9月 * ODBC 2.0:发表于1994年 * ODBC 3.0:发表于1995年 * ODBC 3.5:发表于1997年 * ODBC 3.8:发表于2009年,和[Windows 7](https://zh.wikipedia.org/wiki/Windows_7 "Windows 7")一同发表[\[1\]](https://zh.wikipedia.org/wiki/ODBC#cite_note-1) ## 实现\[[编辑](https://zh.wikipedia.org/w/index.php?title=ODBC&action=edit&section=2 "编辑章节:实现")\] ODBC的运用形态通常是由应用程序经过一个称之为[ODBC管理器](https://zh.wikipedia.org/w/index.php?title=ODBC%E7%AE%A1%E7%90%86%E5%99%A8&action=edit&redlink=1 "ODBC管理器(页面不存在)")的工具,创建一个DSN,指明需要调用的ODBC驱动程序,从而访问对应的数据库。对于用户的应用程序而言,ODBC驱动程序是相对不可见的。用户只需要在ODBC管理器中配置相应的数据库的数据源信息,并登录相应的ODBC驱动程序即可。DSN分为三种: * 用户DSN * 系统DSN * 文件DSN 也可以用连接字符串而不需要事先创建DSN,例如 ~~~ connstr="DRIVER={SQL SERVER};SERVER=servername;UID=xyz;PWD=xxx" connstr="DRIVER={Microsoft Access Driver};SERVER=D:\abc\defg.mdb" ~~~ 各个数据库厂商通常都为自己的数据库实现了ODBC驱动程序。从[Oracle](https://zh.wikipedia.org/wiki/Oracle "Oracle"),[DB2](https://zh.wikipedia.org/wiki/DB2 "DB2"),[SQL Server](https://zh.wikipedia.org/wiki/SQL_Server "SQL Server")到微软的[Access](https://zh.wikipedia.org/wiki/Access "Access")数据库,都实现了面向各自数据库产品的数据驱动程序。 而对于ODBC管理器,当前主要存在以下几种实现: Microsoft ODBC 微软提供的一个实现,当前在大部分[Windows](https://zh.wikipedia.org/wiki/Windows "Windows")操作系统上可以找到它。 unixODBC 主条目:[unixODBC](https://zh.wikipedia.org/w/index.php?title=UnixODBC&action=edit&redlink=1 "UnixODBC(页面不存在)") unixODBC项目为非Windows[操作系统](https://zh.wikipedia.org/wiki/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F "操作系统")(如各版本的[Linux](https://zh.wikipedia.org/wiki/Linux "Linux")、[Unix](https://zh.wikipedia.org/wiki/Unix "Unix")以及[Mac OS](https://zh.wikipedia.org/wiki/Mac_OS "Mac OS"))提供的一个实现。unixODBC的实现涵盖了ODBC 3.0中的所有API规范,并且提供了一个类似于Microsoft ODBC那样的[GUI](https://zh.wikipedia.org/wiki/GUI "GUI")形式的配置界面供用户进行数据源的配置。unixODBC的代码在[GPL](https://zh.wikipedia.org/wiki/GPL "GPL")协议下公开,当前该项目是由[Easysoft](https://zh.wikipedia.org/w/index.php?title=Easysoft&action=edit&redlink=1 "Easysoft(页面不存在)")的Nick Gorham进行管理。unixODBC现在已经是很多Linux发行版的标准安装模式下的一个必要组件。 iODBC 主条目:[iODBC](https://zh.wikipedia.org/w/index.php?title=IODBC&action=edit&redlink=1 "IODBC(页面不存在)") iODBC项目(Independent Open DataBase Connectivity)的目标是提供一个平台无关的实现,该项目当前由[Openlink Software](https://zh.wikipedia.org/w/index.php?title=Openlink_Software&action=edit&redlink=1 "Openlink Software(页面不存在)")进行管理。其代码是在[LGPL](https://zh.wikipedia.org/wiki/LGPL "LGPL")协议以及[BSD](https://zh.wikipedia.org/wiki/BSD "BSD")协议下发布。[苹果公司](https://zh.wikipedia.org/wiki/%E8%8B%B9%E6%9E%9C%E5%85%AC%E5%8F%B8 "苹果公司")从Mac OS X v10.2时代开始,便将iODBC绑定至Mac OS操作系统中。 ## 参考文献\[[编辑](https://zh.wikipedia.org/w/index.php?title=ODBC&action=edit&section=3 "编辑章节:参考文献")\] 1. **[^](https://zh.wikipedia.org/wiki/ODBC#cite_ref-1 "跳转")**[What's New in ODBC 3.8](http://msdn.microsoft.com/en-us/library/ee388580%28VS.85%29.aspx). Microsoft.\[2010-01-13\].Windows 7 includes an updated version of ODBC, ODBC 3.8. ## 外部链接\[[编辑](https://zh.wikipedia.org/w/index.php?title=ODBC&action=edit&section=4 "编辑章节:外部链接")\] * [ODBC -- Open Database Connectivity概观](http://support.microsoft.com/kb/110093) ## 参见\[[编辑](https://zh.wikipedia.org/w/index.php?title=ODBC&action=edit&section=5 "编辑章节:参见")\] * [ADO](https://zh.wikipedia.org/wiki/ADO "ADO")(ActiveX Data Objects) * [MDAC](https://zh.wikipedia.org/wiki/Microsoft_Data_Access_Components "Microsoft Data Access Components")(Microsoft Data Access Components) * [JDBC](https://zh.wikipedia.org/wiki/Java%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%9E%E6%8E%A5 "Java数据库连接")(Java Database Connectivity)