首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

ODBC (開放式資料庫連接) 技術架構與核心特性概述

     編輯:關於SqlServer

ODBC 架構:異質資料庫存取的統一介面標準

Open Database Connectivity (ODBC) 由 Microsoft 主導,基於 SQL (Structured Query Language) 及 ISO/IEC 9075 Call-Level Interface (CLI) 規範,定義應用程式存取資料庫的標準 C API。

核心架構元件

  1. 應用程式:呼叫 ODBC API (`SQLConnect`, `SQLExecDirect`, `SQLFetch` 等)。
  2. 驅動程式管理員:`ODBC32.DLL` (Windows) / `unixODBC` / `iODBC` (Linux/Unix)。負責載入驅動程式、API 版本協商、連線池管理、追蹤記錄。
  3. 驅動程式:廠商提供的 DLL/Shared Library (如 `sqlsrv32.dll`, `psqlodbcw.so`, `ojdbc8.jar` 配合 JDBC-ODBC Bridge)。實作特定 DBMS 通訊協定、SQL 方言轉換、資料型別對應。
  4. 資料來源 (DSN):系統/使用者/檔案 DSN,儲存連線參數 (伺服器、資料庫、驗證、驅動程式名稱)。

五大彈性特性 (MSDN 定義)

特性說明
應用程式不受限於專用 API同一套程式碼透過更換 DSN/驅動程式即可存取 Oracle, SQL Server, PostgreSQL, MySQL, DB2, Access, Excel, 文字檔等 50+ 種資料源。
SQL 陳述式內嵌於原始碼動態建構 SQL 字串傳遞給 `SQLExecDirect`,或預備執行 `SQLPrepare`/`SQLExecute`。支援參數標記 `?` 綁定變數。
應用程式以自有格式收發資料`SQLBindCol` 指定 C 語言緩衝區型別 (SQL_C_CHAR, SQL_C_LONG, SQL_C_DOUBLE, SQL_C_BINARY 等),驅動程式負責型別轉換。
完全相容 ISO CLI 標準核心 API 符合 ISO/IEC 9075-3 (CLI),保證跨平台、跨驅動程式可攜性。
廣泛廠商支援歷經 30 年演進,幾乎所有關聯式/多維/NoSQL 資料庫皆提供 ODBC 驅動程式 (含雲端服務: Azure SQL, Redshift, Snowflake, BigQuery)。

ODBC vs OLE DB vs ADO vs JDBC vs ADO.NET

  • ODBC:C/C++ 原生、跨平台、效能最高、部署輕量。現代雲端原生應用首選 (搭配連線池)。
  • OLE DB:COM 元件、Windows 限定、支援非關聯資料 (階層、文件、圖形)。已由 Microsoft 宣佈淘汰 (2022 後不再更新),建議遷移至 ODBC。
  • ADO (Classic):OLE DB 自動化包裝,供 VB6/ASP/VBScript 使用。**已淘汰**。
  • JDBC:Java 標準 API,Type 4 純 Java 驅動為主流。JVM 生態系標準。
  • ADO.NET:.NET 原生 Provider Model (`SqlClient`, `Npgsql`, `MySqlConnector`)。高效能、非同步、強型別。ODBC 在 .NET 中透過 `System.Data.Odbc` 互通。

連線字串關鍵字速查

-- SQL Server ODBC Driver 17/18+
Driver=ODBC Driver 18 for SQL Server;Server=tcp:myserver,1433;Database=mydb;Uid=myuser;Pwd=mypwd;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;

-- PostgreSQL (psqlodbc)
Driver=PostgreSQL Unicode;Server=myserver;Port=5432;Database=mydb;Uid=myuser;Pwd=mypwd;SSLMode=Require;

-- MySQL (MySQL ODBC 8.0+)
Driver=MySQL ODBC 8.0 Unicode Driver;Server=myserver;Port=3306;Database=mydb;Uid=myuser;Pwd=mypwd;SslMode=REQUIRED;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved