数据库:Microsoft SQL Server - 任何版本
最好是最简单的方法(不连接第三方库)。您只需要测试连接性
在任务中不能使用.Net Framework,不建议使用MFC
Visual Studio 2008 Professional中的项目
CDatabase * db = new CDatabase ();
if (!db->OpenEx (args [2], CDatabase::noOdbcDialog))
{
printf ("Failed to connect to DB\n");
ExitProcess (1);
}
db->Close();
MFC上的此代码不适用,因为它需要安装Redistributable。 最好使用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}; SERVER = {VM7 \ SQLEXPRESS};数据库= {master}”;
VM7是我机器的名称
答案 0 :(得分:0)
Windows附带的“原生”数据库只有2个。它们是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);
}