2014-02-17 60 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

相关问题