• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 各位大侠帮忙啊!传递Ado的Recordset当Com服务器和客户端在统一机器上可以正确执行,但其它机器就不可以。

各位大侠帮忙啊!传递Ado的Recordset当Com服务器和客户端在统一机器上可以正确执行,但其它机器就不可以。

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了 各位大侠帮忙啊!传递Ado的Recordset当Com服务器和客户端在统一机器上可以正确执行,但其它机器就不可以。等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 各位大侠帮忙啊!传递Ado的Recordset当Com服务器和客户端在统一机器上可以正确执行,但其它机器就不可以。
描述:

传递Ado的Recordset当Com服务器和客户端在统一机器上可以正确执行,但其它机器就不可以,两个机子Ado都是2。8版本,而其它的一些Com调用没问题(传递字符、数字等)。先谢过了
Server代码
STDMETHODIMP CAAAATest::GetServerData(IUnknown** sevData)
{
    AFX_MANAGE_STATE(AfxGetAppModuleState());
    HRESULT hr;
    DbCon dbcn;
    _ConnectionPtr cn=dbcn.GetDBConnection();
    _RecordsetPtr rs;
    rs.CreateInstance(__uuidof(Recordset));
    rs->CursorLocation =adUseClient;
    try
    {
        hr=rs->Open(_variant_t((_bstr_t)"Select * from KSSite"),_variant_t((IDispatch *)cn),adOpenKeyset,adLockOptimistic,adCmdText);
    }
    catch(_com_error& er)
    {
    }
    rs->put_ActiveConnection(vtMissing);
    rs->putref_ActiveConnection(NULL); 
    _RecordsetPtr cln=rs->Clone(adLockOptimistic);
    rs->Close();
    rs.Release();
    *sevData=(IUnknown*)cln.Detach(); 
    dbcn.PutDBConnection(cn);
    return S_OK;
}
客户端代码
    COAUTHIDENTITY authidentity;
    CString nm,dn,ps;
    nm=_T("username");
    dn=_T("domain");
    ps=_T("pass");
    authidentity.User =(USHORT *)nm.AllocSysString(); 
    authidentity.UserLength = nm.GetAllocLength();
    authidentity.Domain =(USHORT *)dn.AllocSysString();
    authidentity.DomainLength =dn.GetAllocLength();
    authidentity.Password =(USHORT*)ps.AllocSysString();
    authidentity.PasswordLength = ps.GetAllocLength();
    authidentity.Flags = SEC_WINNT_AUTH_IDENTITY_UNICODE;
    IAAAATest* tst;
    COAUTHINFO auth;
    auth.dwAuthnSvc=-1;
    auth.dwAuthzSvc=0;
    auth.pwszServerPrincName=NULL;
    auth.dwAuthnLevel=RPC_C_AUTHN_LEVEL_DEFAULT;
    auth.dwImpers />     auth.pAuthIdentityData=&authidentity;
    auth.dwCapabilities=EOAC_NONE;
    COSERVERINFO sev;
    sev.dwReserved1=0;
    sev.dwReserved2=0;
    sev.pAuthInfo =&auth;
    USES_CONVERSION ;
    sev.pwszName =A2W("Comserver");
     MULTI_QI mi;
     mi.hr =S_OK;
     mi.pIID=&IID_IAAAATest;
     mi.pItf =NULL;
    HRESULT hr;
    hr=CoCreateInstanceEx(CLSID_AAAATest,NULL,CLSCTX_REMOTE_SERVER,&sev,1,&mi);
    if(hr!=NOERROR)
    {
        CString cs;
        cs.Format("there is a error %x",hr);
        AfxMessageBox(cs);
        return ;
    }
    if (mi.hr!=NOERROR)
    {
        CString cs;
        cs.Format("there is a MQI error %x",hr);
        AfxMessageBox(cs);
        return ;
    }
    tst=(IAAAATest*)mi.pItf;
    _RecordsetPtr rs;
    IUnknown* ink=(IUnknown*)rs.Detach();
    hr=tst->GetServerData((IUnknown**) &ink);
    if(FAILED(hr))    
    {
        cs.Format("there is a GetServerData error %x",hr);
        AfxMessageBox(cs);
        tst->Release(); 
        return ;
    }
    try{
    
    if (ink)
    {
        rs.Attach((_Recordset*)ink);
        ADO_LONGPTR cnt=rs->RecordCount ;
        cs.Format("Find Record %d",cnt); 
        AfxMessageBox(cs);
        rs->Close();
        rs.Release(); 
    }
    else
    {
        AfxMessageBox("Can not Get ref");
    }
    tst->Release(); 
    }
    catch(_com_error& er)
    { 
    }
谢谢


解决方案1:

不知道是不是要初始化安全性,设置看看

解决方案2:

应该不行,recordset里面又不包含数据,你怎么能在另外一台机子上操作原来机子上的数据呢?


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 各位大侠帮忙啊!传递Ado的Recordset当Com服务器和客户端在统一机器上可以正确执行,但其它机器就不可以。

相关文章

  • 2017-06-05 什么情况下需要#include<afxdtctlh>?
  • 2017-06-04 求《idl精髓》电子书
  • 2017-06-04 标准OLECOM需要实现哪些接口
  • 2017-06-04 如何做一个mmc管理工具
  • 2017-06-05 我的机子里发现了奇怪的文件
  • 2017-06-04 怎样在Win2000下调试ASP里的COM?
  • 2017-06-04 如何用com读取数据库内用,并将内容创建为文件,并能调用该文件?最好有源码例子!!
  • 2017-06-05 RE:动态连接库问题
  • 2017-06-05 如何在单文档里面调用ocx
  • 2017-06-04 一个关于access里ole对象word读取和在vc界面(dialog中显示的问题十万火急)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 关于excel操作------在线100
    • 客户端能否动态加载服务器端的DLL
    • 如何结束explorer进程
    • 问几个关于ActiveX的问题。。
    • 请教为什么包含调用word的exe文件换台机器必须重新编译一下才可以运行???
    • 关于ATL开发ActiveX的问题。
    • 如何设置Outlook联系人中的notes属性
    • 高分求大侠救命,怎么在DLL中调用WebBrowser控件?分不够可以加,帮忙的一定给分。
    • CoCreateInstance和CoGetClassObject功能一样吗,能否互相替代?
    • wtl:子窗体如何给父窗体发消息?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有