@超越自我@ 2022-11-24 17:25 采纳率: 50%
浏览 3
已结题

请问VC++ 数据库连接如何修改成局域网数据库?

问题遇到的现象和发生背景

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

我想要达到的结果

可以局域网连接数据库

  • 写回答

1条回答 默认 最新

  • yun6853992 2022-11-24 17:34
    关注

    首先,你在这个局域网内吗?
    其次,个人理解,与局域网概念无关,而在于你的网络是否是通得,你可以试着在你电脑上能用工具登录成功,再用代码测试。
    最后 如果你是想在别处连接特定局域网得数据库,这就是另一个知识点了。 内网穿透,端口映射啊,得有权限访问到吧

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月3日
  • 已采纳回答 11月25日
  • 创建了问题 11月24日

悬赏问题

  • ¥15 MATLAB代码补全插值
  • ¥15 Typegoose 中如何使用 arrayFilters 筛选并更新深度嵌套的子文档数组信息
  • ¥15 前后端分离的学习疑问?
  • ¥15 stata实证代码答疑
  • ¥50 husky+jaco2实现在gazebo与rviz中联合仿真
  • ¥15 dpabi预处理报错:Error using y_ExtractROISignal (line 251)
  • ¥15 在虚拟机中配置flume,无法将slave1节点的文件采集到master节点中
  • ¥15 husky+kinova jaco2 仿真
  • ¥15 zigbee终端设备入网失败
  • ¥15 金融监管系统怎么对7+4机构进行监管的