https://zh.wikipedia.org/wiki/ODBC
# ODBC\[[编辑](https://zh.wikipedia.org/w/index.php?title=ODBC&action=edit§ion=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§ion=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§ion=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§ion=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§ion=4 "编辑章节:外部链接")\]
* [ODBC -- Open Database Connectivity概观](http://support.microsoft.com/kb/110093)
## 参见\[[编辑](https://zh.wikipedia.org/w/index.php?title=ODBC&action=edit§ion=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)
- 数据库
- CAP定理
- 关系模型
- 关系数据库
- NoSQL
- ODBC
- JDBC
- ODBC、JDBC和四种驱动类型
- mysql
- 安装与配置
- CentOS 7 安装 MySQL
- 优化
- 比较全面的MySQL优化参考
- 1、硬件层相关优化
- 1.1、CPU相关
- 1.2、磁盘I/O相关
- 2、系统层相关优化
- 2.1、文件系统层优化
- 2.2、其他内核参数优化
- 3、MySQL层相关优化
- 3.1、关于版本选择
- 3.2、关于最重要的参数选项调整建议
- 3.3、关于Schema设计规范及SQL使用建议
- 3.4、其他建议
- 后记
- Mysql设计与优化专题
- ER图,数据建模与数据字典
- 数据中设计中的范式与反范式
- 字段类型与合理的选择字段类型
- 表的垂直拆分和水平拆分
- 详解慢查询
- mysql的最佳索引攻略
- 高手详解SQL性能优化十条经验
- 优化SQL查询:如何写出高性能SQL语句
- MySQL索引原理及慢查询优化
- 数据库SQL优化大总结之 百万级数据库优化方案
- 数据库性能优化之SQL语句优化1
- 【重磅干货】看了此文,Oracle SQL优化文章不必再看!
- MySQL 对于千万级的大表要怎么优化?
- MySQL 数据库设计总结
- MYSQL性能优化的最佳20+条经验
- 数据操作
- 数据语句操作类型
- DCL
- 修改Mysql数据库名的5种方法
- DML
- 连接
- 连接2
- DDL
- 数据类型
- 字符集
- 表引擎
- 索引
- MySQL理解索引、添加索引的原则
- mysql建索引的几大原则
- 浅谈mysql的索引设计原则以及常见索引的区别
- 常用工具简介
- QA
- MySQL主机127.0.0.1与localhost区别总结
- 视图(view)
- 触发器
- 自定义函数和存储过程的使用
- 事务(transaction)
- 范式与反范式
- 常用函数
- MySQL 数据类型 详解
- Mysql数据库常用分库和分表方式
- 隔离级别
- 五分钟搞清楚MySQL事务隔离级别
- mysql隔离级别及事务传播
- 事务隔离级别和脏读的快速入门
- 数据库引擎中的隔离级别
- 事务隔离级别
- Innodb中的事务隔离级别和锁的关系
- MySQL 四种事务隔离级的说明
- Innodb锁机制:Next-Key Lock 浅谈
- SQL函数和存储过程的区别
- mongo
- MongoDB设置访问权限、设置用户
- redis
- ORM
- mybatis
- $ vs #
- mybatis深入理解(一)之 # 与 $ 区别以及 sql 预编译
- 电商设计
- B2C电子商务系统研发——概述篇
- B2C电子商务系统研发——商品数据模型设计
- B2C电子商务系统研发——商品模块E-R图建模
- B2C电子商务系统研发——商品SKU分析和设计(一)
- B2C电子商务系统研发——商品SKU分析和设计(二)
- 数据库命名规范--通用