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

VC++ 使用 ADO 連接 Oracle 與 SQL Server 資料庫範例

     編輯:Oracle 資料庫基礎

前言

在傳統 VC++ (MFC/ATL) 專案中,透過 ADO (ActiveX Data Objects) 搭配 OLE DB Provider 是連接異構資料庫的常用手法。本文提供連接 Oracle (MSDAORA) 與 SQL Server (SQLOLEDB) 的最小化程式碼範本。

通用 ADO 初始化流程

  1. CoInitialize(NULL) 初始化 COM 库。
  2. 建立 _ConnectionPtr 智慧指標。
  3. 設定連線字串 ConnectionString。
  4. 呼叫 Open(),處理 _com_error 例外。
  5. 使用完畢呼叫 Close() 並 CoUninitialize()。

連接 Oracle (Provider=MSDAORA.1)

_ConnectionPtr m_pConn;
CString m_sConn = "Provider=MSDAORA.1;Data Source=ORCL;"; // ORCL 為 tnsnames 別名
// 或使用 IP: Provider=MSDAORA.1;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.3.9)(PORT=1521))(CONNECT_DATA=(SID=ORCL)));

m_pConn.CreateInstance(__uuidof(Connection));
try {
    HRESULT hr = m_pConn->Open((_bstr_t)m_sConn, "scott", "tiger", adConnectUnspecified);
    if (FAILED(hr)) {
        AfxMessageBox(_T("無法連接 Oracle 資料庫!"));
        return FALSE;
    }
    // 連線成功,可執行 SQL...
}
catch (_com_error &e) {
    AfxMessageBox(_T("資料庫連線錯誤:") + e.ErrorMessage());
    return FALSE;
}

連接 SQL Server (Provider=SQLOLEDB.1)

_ConnectionPtr m_pConn;
CString m_sConn = "Provider=SQLOLEDB.1;Data Source=192.168.3.9;Initial Catalog=MyDB;";

m_pConn.CreateInstance(__uuidof(Connection));
try {
    HRESULT hr = m_pConn->Open((_bstr_t)m_sConn, "sa", "password", adConnectUnspecified);
    if (FAILED(hr)) {
        AfxMessageBox(_T("無法連接 SQL Server!"));
        return FALSE;
    }
}
catch (_com_error &e) {
    AfxMessageBox(_T("錯誤:") + e.ErrorMessage());
    return FALSE;
}

注意事項

  • MSDAORA 為 Microsoft 提供的 Oracle OLE DB Provider,功能有限;生產環境建議改用 OraOLEDB.Oracle (Oracle 官方 Provider) 以支援更多資料型別與效能優化。
  • 連線字串中的 Data Source:Oracle 可用 TNS 別名或完整描述字串;SQL Server 則為伺服器 IP/主機名,Initial Catalog 指定資料庫名稱。
  • 錯誤處理務必捕捉 _com_error,透過 ErrorMessage() 取得詳細 OLE DB 錯誤描述。
  • 專案需加入 #import "msado15.dll" no_namespace rename("EOF", "adoEOF") 導入 ADO 型別庫。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved