问题遇到的现象和发生背景
VC++局域网连接SQLSERVER失败
用代码块功能插入代码,请勿粘贴截图
BOOL CMyhotelApp::InitInstance()
{
try//连接数据库
{
CString strConnect;
strConnect.Format("DSN=myhotel;");
if(!m_DB.OpenEx(strConnect,CDatabase::useCursorLib))
{
AfxMessageBox("Unable to Connect to the Specified Data Source");
return FALSE ;
}
}
catch(CDBException *pE)//抛出异常
{
pE->ReportError();
pE->Delete();
return FALSE;
}
/* AfxEnableControlContainer();
SetDialogBkColor (RGB (140, 180, 220), RGB (225, 71, 6,));*/
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
// ------------------------------------------------------------------------------------------------
// 初始化COM,创建ADO连接等操作
AfxOleInit();
m_pConnection.CreateInstance(__uuidof(Connection));
// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
//
try
{
// 打开本地数据库
//m_pConnection->Open("Provider=MSDASQL.1;Persist Security Info=False;Data Source=myhotel","sa","",adModeUnknown);
m_pConnection->Open("driver={SQL SERVER};SERVER=192.168.8.31;Database=myhotel;uid=sa;pwd=","sa","",adModeUnknown);
}
catch(_com_error e)//抛出可能发生的异常
{
AfxMessageBox("数据库连接失败,确认数据库配置正确!");
return FALSE;
}
// ---------------------------------------------------------------------------------------------------
CMyhotelDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}
运行结果及报错内容
不能连接局域网数据库
我的解答思路和尝试过的方法
添加局域网IP
我想要达到的结果
可以局域网连接数据库