@超越自我@ 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日

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来