首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 組合語言

ODBC 組語教程(二):連接資料源完整流程與 API 詳解

     編輯:組合語言

前言

ODBC 程式透過 ODBC 管理器與驅動程式溝通,連接資料源需經歷:環境控制代碼分配、設定 ODBC 版本、連接控制代碼分配、建立連線、斷線與釋放資源五大階段。

所需引入檔

include windows.inc
include odbc32.inc
includelib odbc32.lib

1. 分配環境控制代碼

.data?
hEnv dd ?
.code
invoke SQLAllocHandle, SQL_HANDLE_ENV, SQL_HANDLE_NULL, addr hEnv
.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
    ; 成功
.endif

SQL_HANDLE_NULL 需從 windows.inc 移除尾隨的 "L" 才能通過 MASM 編譯。

2. 設定 ODBC 版本屬性

invoke SQLSetEnvAttr, hEnv, SQL_ATTR_ODBC_VERSION, SQL_OV_ODBC3, NULL
.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
    ; 成功
.endif
  • SQL_OV_ODBC3:使用 ODBC 3.x 語法(建議)。
  • SQL_OV_ODBC2:相容 2.x。

3. 分配連接控制代碼

.data?
hConn dd ?
.code
invoke SQLAllocHandle, SQL_HANDLE_DBC, hEnv, addr hConn

4. 建立連線:三種 API 比較

API特點適用情境
SQLConnect僅需 DSN、使用者、密碼;無 GUI已知 DSN,自動化腳本
SQLDriverConnect支援無 DSN 連線字串、可選擇性彈出對話框一般應用程式,需使用者互動選擇資料庫
SQLBrowseConnect多次呼叫逐步建構連線資訊,最靈活複雜部署、需動態探索資料源屬性

SQLConnect 範例

.data
DSN db "Sales",0
.code
invoke SQLConnect, hConn, addr DSN, sizeof DSN, 0, 0, 0, 0

SQLDriverConnect 範例

.data
strConnect db "DBQ=c:\data\test.mdb;DRIVER={Microsoft Access Driver (*.mdb)};",0
.data?
buffer db 1024 dup(?)
OutStringLength dd ?
.code
invoke SQLDriverConnect, hConn, hWnd, addr strConnect, sizeof strConnect, \
    addr buffer, sizeof buffer, addr OutStringLength, SQL_DRIVER_COMPLETE
  • hWnd:父視窗控制代碼,NULL 則不顯示對話框。
  • DriverCompletion:SQL_DRIVER_PROMPT(必詢)、SQL_DRIVER_COMPLETE(缺資訊才詢)、SQL_DRIVER_NOPROMPT(不詢)。

5. 斷線與釋放資源

invoke SQLDisconnect, hConn
invoke SQLFreeHandle, SQL_HANDLE_DBC, hConn
invoke SQLFreeHandle, SQL_HANDLE_ENV, hEnv

SQLFreeHandle 取代舊版 SQLFreeConnect/SQLFreeEnv。

錯誤診斷

所有 ODBC 函數失敗時,可呼叫 SQLGetDiagRec 或 SQLGetDiagField 取得詳細錯誤資訊(類似 GetLastError)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved