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

VC++ MFC 從 Access 遷移到 SQL Server:ADO 連接字符串修改指南

     編輯:程式設計綜合問答

VC++ MFC 使用 ADO 連接 Access 數據庫,遷移至 SQL Server 核心只需修改連接字符串與部分 SQL 語法。本文提供完整遷移清單與代碼對比。

核心變更:連接字符串

MFC ADO 代碼修改對比

原 Access 代碼

_ConnectionPtr pConn;
pConn.CreateInstance(__uuidof(Connection));
_bstr_t strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\db.mdb;";
pConn->Open(strConn, "", "", adConnectUnspecified);

// 執行 SQL
_RecordsetPtr pRs;
pRs = pConn->Execute("SELECT * FROM Users WHERE Age > 20", NULL, adCmdText);

遷移後 SQL Server 代碼

_ConnectionPtr pConn;
pConn.CreateInstance(__uuidof(Connection));
_bstr_t strConn = "Provider=SQLOLEDB;Server=192.168.1.100;Database=MyDB;UID=sa;PWD=123456;";
pConn->Open(strConn, "", "", adConnectUnspecified);

// SQL 語法基本兼容,注意:
// 1. 日期格式:Access #2023-1-1# → SQL Server '2023-01-01'
// 2. 自增列:Access AUTOINCREMENT → SQL Server IDENTITY(1,1)
// 3. 通配符:Access * ? → SQL Server % _
// 4. 保留字:SQL Server 保留字更多,用 [] 括起來

_RecordsetPtr pRs;
pRs = pConn->Execute("SELECT * FROM [Users] WHERE [Age] > 20", NULL, adCmdText);

完整遷移清單

  1. 連接字符串:按上表修改
  2. 建表腳本:Access SQL → T-SQL (數據類型、約束、索引語法調整)
  3. 數據遷移:SSMA (SQL Server Migration Assistant) 或 導出 CSV → BULK INSERT
  4. 存儲過程/視圖:Access 無存儲過程,需重寫業務邏輯為 T-SQL
  5. ADO 代碼:逐文件搜索連接字符串、SQL 語句、錯誤處理
  6. 測試驗證:單元測試覆蓋所有 CRUD、事務、併發場景

常見遷移陷阱

數據庫Provider連接字符串示例
Access (Jet OLEDB)Microsoft.Jet.OLEDB.4.0Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db.mdb;
Access (ACE OLEDB)Microsoft.ACE.OLEDB.12.0Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\db.accdb;
SQL Server (OLEDB)SQLOLEDBProvider=SQLOLEDB;Server=192.168.1.100;Database=MyDB;UID=sa;PWD=123456;
SQL Server (ODBC)MSDASQLDriver={SQL Server};Server=192.168.1.100;Database=MyDB;UID=sa;PWD=123456;
SQL Server (Native Client)SQLNCLI11Provider=SQLNCLI11;Server=192.168.1.100;Database=MyDB;UID=sa;PWD=123456;
問題Access 行為SQL Server 行為解決
空字符串 vs NULL"" 等同 NULL截然不同統一用 NULL,參數檢查
日期字面量#yyyy-mm-dd#'yyyy-mm-dd'參數化查詢自動處理
TOP nTOP nTOP (n) / OFFSET FETCH改用標準語法
大小寫敏感不敏感取決於 Collation指定 CI_AI 排序規則

推薦工具

  • SSMA for Access:微軟官方免費遷移工具,自動轉換架構、數據、查詢
  • SQL Server Profiler:追蹤執行的 SQL,對比 Access 行為

總結

VC++ MFC + ADO 遷移 Access → SQL Server,**90% 工作量在連接字符串與 SQL 方言差異**。建議:先用 SSMA 遷移架構數據,再逐模塊修改 ADO 代碼,重點測試參數化查詢、事務、日期處理。

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