2014-02-17 102 views
1

數據庫:微軟SQL服務器 - 任何版本如何檢查與SQL Server數據庫的C++代碼連接?

最好最簡單的方法(不連接第三方庫)。你只需要測試連接

在任務不能使用.Net框架,這是不可取的MFC

該項目在Visual Studio 2008專業

CDatabase * db = new CDatabase(); 
if (!db->OpenEx (args [2], CDatabase::noOdbcDialog)) 
{ 
    printf ("Failed to connect to DB\n"); 
    ExitProcess (1); 
} 
db->Close(); 

在MFC這段代碼不適合,因爲它需要安裝可再發行組件。 可取的是使用WinAPI。

感謝您的關注。

UPD:

SQLHANDLE hEnv, hDbc; 

SQLAllocHandle (SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hEnv); 
SQLSetEnvAttr (hEnv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER) SQL_OV_ODBC3, NULL); 
SQLAllocHandle (SQL_HANDLE_DBC, hEnv, &hDbc); 

LPSTR lpConnectionString = args [2]; 
LPSTR lpOutputString = new CHAR [256]; 
SQLSMALLINT sLength; 
SQLRETURN sqlRet = SQLDriverConnect(hDbc, 0, (SQLCHAR*)lpConnectionString, strlen (lpConnectionString), (SQLCHAR*)lpOutputString, 255, &sLength, SQL_DRIVER_NOPROMPT); 

ARGS [2] = 「DRIVER = {SQL服務器}; SERVER = {VM7 \ SQLEXPRESS};數據庫= {}主」;

VM7是

+1

安裝MFC的可再發行組件庫並不完全困難,你知道...... –

+0

我知道了。如果您在服務器上部署應用程序。這是不可取的。 – agorshkov23

回答

0

只有2 Windows附帶「天然」數據庫庫我的機器的名字。他們是ODBC和OLEDB。鑑於OLEDB是一個基於COM的界面,需要更多的知識,我只打算在這裏討論ODBC解決方案。

下面的代碼是光禿禿的骨頭,只是提供如何解決問題的提示。

#include <Windows.h> 
#include <sql.h> 
#include <sqlext.h> 
#include <sqltypes.h> 

#define MAX_STRING_LEN 255 

int main() 
{ 
    SQLHANDLE henv, hdbc; 

    SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); 
    SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_ODBC_VER, SQL_IS_INTEGER); 
    SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc); 

    wchar_t* connection_string = L"Driver={SQL Server};Server=<address>;Database=<database name>;Uid=<username>;Pwd=<password>"; 
    wchar_t output_string[MAX_STRING_LEN + 1]; 
    SQLSMALLINT out_length; 
    SQLDriverConnect(hdbc, 0, connection_string, lstrlen(connection_string), output_string, MAX_STRING_LEN, &out_length, SQL_DRIVER_NOPROMPT); 

} 
+0

非常感謝!連接成功,但只能在位於LOCALHOST上的SQL Server上運行,也就是說,網絡不工作的一部分對你的代碼非常有幫助。 我的代碼幫助,查看更新 – agorshkov23

相關問題