簡體   English   中英

如何在沒有ODBC的情況下從C ++連接到SQL Server?

[英]How to connect to SQL Server from C++ without ODBC?

我有一個SQL Server,我所知道的就是機器上沒有ODBC數據源設置,我需要從C ++連接到它。 我有一個用戶名和密碼,如何連接?

您可以使用SQLDriverConnect在沒有DSN的情況下使用ODBC進行連接。 在連接字符串中指定已安裝驅動程序的名稱。 一個SQL Server本機客戶端11示例:

Driver={SQL Server Native Client 11.0};Server=SqlHostName;Database=SomeSqlDatabase;UID=YourUserName;PWD=YourPassword

程式碼片段:

retcode = SQLDriverConnect(hdbc
    , NULL
    , (SQLCHAR*)InConnectionString
    , (SQLSMALLINT)sizeof(InConnectionString)
    , (SQLCHAR*)OutConnectionString
    , (SQLSMALLINT)sizeof(OutConnectionString)
    , (SQLSMALLINT*)StringLength2Ptr
    , (SQLUSMALLINT)DriverCompletion
    );

編輯:

連接字符串中的驅動程序名稱必須用大括號括起來,並且必須與ODBC數據源管理員工具(odbcad32.exe)的“驅動程序”選項卡下列出的驅動程序名稱完全匹配。 Windows附帶了名為“ SQL Server”的ODBC驅動程序,但提供了舊驅動程序以實現向后兼容。 通常應該使用單獨安裝的ODBC驅動程序,該驅動程序支持自SQL Server 2005起添加的較新的數據類型和功能。

撰寫本文時,最新的SQL Server ODBC驅動程序是獨立的“ SQL Server ODBC驅動程序13”(版本13.1)。

我個人在C ++應用程序中使用SQL Server本機客戶端(OLE DB)來與SQL Server 2008一起使用。我所需要的只是連接到它的服務器IP地址,端口,用戶名和密碼。 (我們使用SQL Server身份驗證,而不是Windows身份驗證)。 要開發/編譯這樣的應用程序,我只需要sqlncli.h和.lib

SQL Server本機客戶端OLE DB提供程序是用於訪問數據的低級COM API。 建議使用SQL Server Native Client OLE DB提供程序來開發需要高性能的工具,實用程序或低級組件。 SQL Server本機客戶端OLE DB提供程序是一種本機高性能提供程序,可直接訪問SQL Server表格數據流(TDS)協議。

SQL Server本機客戶端為連接到SQL Server的應用程序提供OLE DB支持。

它是低級的,但是可以訪問服務器的所有功能。 例如,我使用表值參數調用存儲過程,並且使用諸如varbinary(max)之類的類型。

看看本文何時使用SQL Server Native Client

SQL Server Native Client是一種可用於訪問SQL Server數據庫中的數據的技術。 有關不同數據訪問技術的討論,請參閱數據訪問技術路線圖

在決定是否使用SQL Server Native Client作為應用程序的數據訪問技術時,應考慮幾個因素。

對於新應用程序,如果使用的是Microsoft Visual C#或Visual Basic之類的托管編程語言,並且需要訪問SQL Server中的新功能,則應使用SQL Server的.NET Framework數據提供程序。 .NET Framework。

如果要開發基於COM的應用程序,並且需要訪問SQL Server中引入的新功能,則應使用SQL Server Native Client。 如果不需要訪問SQL Server的新功能,則可以繼續使用Windows數據訪問組件(WDAC)。

對於現有的OLE DB和ODBC應用程序,主要問題是是否需要訪問SQL Server的新功能。 如果您具有不需要SQL Server新功能的成熟應用程序,則可以繼續使用WDAC。 但是,如果確實需要訪問這些新功能(例如xml數據類型),則應使用SQL Server Native Client。

SQL Server Native Client和MDAC都支持使用行版本控制讀取提交的事務隔離,但是只有SQL Server Native Client支持快照事務隔離。 (在編程方面,具有行版本控制的讀取提交的事務隔離與讀取提交的事務相同。)

有關SQL Server Native Client和MDAC之間的區別的信息,請參閱從MDAC將應用程序更新到SQL Server Native Client。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM