• 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 > ATL开发出的COM组件封装了ADO功能,在本机执行可以连接数据库,而远程调用COM则连接失败,请大家指点。

ATL开发出的COM组件封装了ADO功能,在本机执行可以连接数据库,而远程调用COM则连接失败,请大家指点。

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

佚名通过本文主要向大家介绍了 ATL开发出的COM组件封装了ADO功能,在本机执行可以连接数据库,而远程调用COM则连接失败,请大家指点。等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: ATL开发出的COM组件封装了ADO功能,在本机执行可以连接数据库,而远程调用COM则连接失败,请大家指点。
描述:

我简单的利用ATL做了一个EXE类型的COM服务器程序,其中封装了ADO的部分功能。
连接数据库的函数,关键部分如下:
  STDMETHODIMP CMy_ADO::Open(BSTR Computer, BSTR dbName, BSTR dbUser, BSTR dbPsw)
{
HRESULT hr;
hr = m_connection.CreateInstance("ADODB.Connection");
if(SUCCEEDED(hr))
{
   _bstr_t strConn("Provider=SQLOLEDB.1;Password=begin_sa;"
"Persist Security Info=True;User ID=sa;"
"Initial Catalog=dbPos;Data Source=GUOXP");
   hr = m_connection->Open(strBConn,L"",L"", 
                                     adConnectUnspecified);
{
if (SUCCEEDED(hr))
{
                             // ……处理代码
}
}
else
                            {
     MessageBox(NULL,L"can't Connection to 
                               DataBase...",L"Server Error!",MB_OK);
                             }  
}
}
else
MessageBox(NULL,L"can't CreateInstance 
                       (ADODB.Connection)",L"Server Error!",MB_OK);
return hr;
}
如果在本地计算机上测试该组件(数据库、COM组件应用程序都在本地),那么将能够正确的连接到数据库上;
如果从局域网内的另一台计算机上访问组件,那么组件实例能够创建成功,然而总会
报错: 
    "Can't Connection to DataBase..."
请诸位高手指点,是否这个连接字符串写的有问题呀??该如何改正这个问题呢?


解决方案1:

调用com的用户需是数据库服务器的一个合法用户!

解决方案2:

两种可能,支持
qiuxiangyong
icelight

解决方案3:

hr = m_connection->Open(strBConn,L"",L"",adConnectUnspecified);
看看你的hr的返回值啊,应该能告诉你更详细的信息
icelight的说法也非常值得考虑
可可以指定你的COM组件运行权限看看

解决方案4:

没理解错的话:你的COM与数据库一直在同一电脑上,而客户端就可以在同一电脑上也可以在不同电脑上。若在同一电脑上就连接数据库成功,而不在同一电脑上就连接数据库失败。这的确很奇怪,会不会跟权限有关?本机的客户端是以管理员身份运行的,而远程客户端就没这个身份。

解决方案5:

知道UDL文件吗?用它来测试一下字符串。
新建一TXT文件,改后缀为UDL。双击测试正确后,用NODEPAD打开,取字符串。


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

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

  • ATL开发出的COM组件封装了ADO功能,在本机执行可以连接数据库,而远程调用COM则连接失败,请大家指点。

相关文章

  • 2017-06-05 如何写一个多线程安全的类?
  • 2017-06-05 老问题了,寻求合适的API,请进
  • 2017-06-04 获得容器的HINSTANCE???
  • 2017-06-05 DLL的一个小问题
  • 2017-06-04 请问大家如何使用VC的ATL实现一个COM对象上2个接口
  • 2017-06-05 为什么我在工作线程中调用主窗口的函数会死,谢谢
  • 2017-06-04 用ATL做好的镶嵌在WEB上的控件不能在没有装VS。NET2003的机子上正常装载啊!
  • 2017-06-05 如何得到当前系统的所有进程的ID??
  • 2017-06-05 进程的问题!我用一个父进程创建了一个子进程,我想当这个父进程终止的时候也同时终止这个子进程,我应该怎么做!!
  • 2017-06-05 bho技术在其他ie内核浏览器中的疑问

文章分类

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

最近更新的内容

    • 如何传递自定义结构--MFCActiveXControlWizard建立的工程
    • 请问如何破解dll的文件!也就是把dll的文件的源文件给破解出来!
    • 寻求源代码:本地进程间密钥请求!
    • ATLWord插件DocumentBeforeClose/Print/Save问题
    • 当我的一个属性改变以后,我想改变控件的大小。怎么通知控件改变?
    • 规则dll和扩展dll的区别在哪里??
    • Win2000Server的Com+组件,如何让Win98,Win2000,WinXP客户端都可以调用?
    • 请问DiskID32DLL怎么用VC调用?
    • 调用DLL中一个函数时,怎样取得其中的字符串的变量?急急!!
    • ActivexIunkonwn接口问题

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

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