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分析和設計(二)
- 數據庫命名規范--通用