_bstr_t strCnn("Provider=sqloledb;Data Source=SocietySQL;Integrated Security='SSPI';\
                           Initial Catalog=社保管理;Address=192.168.124.90,2433");//为了安全,帖在这里的IP地址我改了。            g_pCT.CreateInstance(__uuidof(Connection));
            g_pRS.CreateInstance(__uuidof(Recordset));
            g_pCT->Open(strCnn,"用户名","密码",adConnectUnspecified);//为了安全,用户名与密码我也改了
            _bstr_t m_bstrSQL;
            m_bstrSQL = "SELECT * FROM 个人信息 WHERE 社会保障号 = '"+m_strSHHBZHH1+"'";
            g_pRS = g_pCT->Execute(m_bstrSQL,NULL,adCmdText);这里是我的一段代码。我在本机上运行一点问题都没有,可是放在别人的机器上就出问题了,错误提示竟是“末指定的错误”,他的机器上的System DSN与我设的一模一样。
因为我开始不会ADO,所以程序前面的部分是用DAO写的,DAO部分在他的机器上运行是没有问题的,而关于ADO这部分就出问题了,我觉得是我的strCnn这个参数给错了,但我又不知道正确的该如何,请高人给予指导,谢谢了。我又在OPEN这个函数的后一行写了一测试行,结果显示g_pCT这个连接根本没有打开,唉,真是郁闷,请高人看到了,一定帮忙解决一下啊!非常感谢!我是新来的,不懂规矩,如果说话有什么不适当的地方,请多包涵,谢谢了。

解决方案 »

  1.   

    不是网络问题的,因为既然DAO可以连接,就不存在网络的问题的。现在我搞定了,原因是这样的:
    g_pCT->Open(strCnn,"用户名","密码",adConnectUnspecified);
    这句代码有问题。因为我用了System DSN,所以这句话不应该这样写,而应该写成:
    g_pCT->Open("SocietySQL","用户名","密码",adConnectUnspecified);
    因为如果我用原来那句话的话,那么会用系统用户,使用信用联接去联接数据库,虽然后面有登录的用户名与密码。这样就在我的本机上登录就没有问题,因为SQL在我的机器上,但其它的机器就不行了。所以就需要把原来的那句strCnn的定义删了,改成了后面这句话,就搞定了,哈哈哈哈。
      

  2.   

    后面这条语句里的"SocietySQL"是定义的System DSN的名字。