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

Windows NT 上 32 位元 SQL Server 應用程式開發:DB-Library Win32 遷移指南

     編輯:關於SqlServer

本文針對 DB-Library 開發人員,說明將 16 位元 Windows 3.x/OS/2 應用程式遷移至 Windows NT 32 位元 (Win32) 平台的關鍵要點。

Win32 DB-Library 架構特性

  • 每個 DB-Library DLL 實例擁有私有資料區,共享程式碼
  • 獨立作業系統執行緒處理每個 SQL Server 連線
  • 異於 Win16:單一資料段、需 dbinit/dbwinexit 初始化清除

核心程式庫與環境變數

檔案用途環境變數
NTWDBLIB.DLLDB-Library 函數PATH
DBNMPNTW.DLL命名管道驅動程式PATH
NTWDBLIB.LIB匯入定義 (Link 時需求)LIB

必要標頭檔與編譯設定

#define DBNTWIN32
#include 
#include 
  • 在所有 Win32 DB-Library 程式開頭定義 DBNTWIN32
  • 或編譯參數 /D DBNTWIN32
  • INCLUDE 路徑需包含標頭檔目錄

編譯連結範例

cl386 -c -G3d -Di386=1 -DWIN32 sqltest.c
link -Machine:i386 -subsystem:Windows -out:sqltestw.exe
  -entry:WinMainCRTStartup sqltestw.res sqltestw.obj
  $(guilibs) $(DBLIB)\ntwdblib.lib

三種遷移策略

策略適用情境做法
1. 不修改執行既有穩定應用、無未來擴充需求Win16 子系統直接執行
2. 原始碼雙平台編譯持續開發、需同時支援 Win16/Win32條件編譯區隔平台差異
3. 完全轉換 Win32需執行緒、搶先式多工、大記憶體移除冗餘 Win16 呼叫與相依

保持 Win16 相容性的關鍵調整

  • 函數原型使用可移植資料型別(INT_PTR、LONG_PTR 等)
  • 視窗訊息參數 wParam/lParam 已擴展為 32 位,檢查編碼/解碼邏輯
  • int 在 Win16 為 16 位、Win32 為 32 位,接收 DB-Library 回傳值的變數型別必須調整
  • dbprhead/dbprrow 在 Win32 主控台應用程式可用(Win16 不支援)

冗餘 Win16 專用函數(Win32 下為空操作)

  • dblocklib、dbunlocklib

遵循本指南,可順利將 DB-Library 應用程式遷移至 Windows NT 平台,並充分發揮 Win32 多執行緒與大記憶體優勢。

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