• 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 > 300分,来者有分:将问题一问到底,关于COM组件访问数据库问题,分不够另给

300分,来者有分:将问题一问到底,关于COM组件访问数据库问题,分不够另给

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

佚名通过本文主要向大家介绍了300分,来者有分:将问题一问到底,关于COM组件访问数据库问题,分不够另给等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 300分,来者有分:将问题一问到底,关于COM组件访问数据库问题,分不够另给
描述:

我刚开始学习ATL编写组件.
 GetRecordSet  InitADO 是我加入到组件中两个函数(有别人提供).
 完成初始化,和取得数据的问题. 
InitADO
{
     USES_CONVERSION;   // Enables OLE2T macro
     HRESULT hr = S_OK;
   _bstr_t bstrConnectString;
   _bstr_t bstrUserID;   
   _bstr_t bstrPassword; 
                         
   try
   {
      bstrConnectString ="driver={SQL SERVER}; \
                  Server=lipsh;\
                                  id=;pwd=;    \
                  database=MIS";
      bstrUserID = "";
      bstrPassword = "";
      hr = m_spADOConnection.CreateInstance(__uuidof(Connection), NULL);
      hr = m_spADOConnection->Open(bstrConnectString, bstrUserID, 
           bstrPassword, adOptionUnspecified);
      hr = m_spADORecordset.CreateInstance(__uuidof(Recordset), NULL);
      _bstr_t    bstrQuery(L"SELECT * FROM S_Info");
      _variant_t vQuery(bstrQuery);
      _variant_t vDispatch((IDispatch*)m_spADOConnection);
      m_spADOConnection->AddRef();
      hr = m_spADORecordset->Open(vQuery, 
                        vDispatch, 
                        adOpenDynamic, 
                        adLockOptimistic, 
                        adCmdText);
   }
   catch(_com_error &err)
   {
       TCHAR szBuf[2056];
      _tcscpy(szBuf, _T(""));
      _tcscat(szBuf, err.ErrorMessage());
       _bstr_t bstrSource(err.Source());
      _bstr_t bstrDesc(err.Description());
      _tcscat(szBuf, (char*)bstrSource);
      _tcscat(szBuf, (char*)bstrDesc);      
      #ifdef _DEBUG
      OutputDebugString(szBuf);
      #endif // _DEBUG
      return E_FAIL;
   }
  }
GetRecordSet(IUnknown **NativeRecordSet)
{
   if (NativeRecordSet == NULL)
      return E_INVALIDARG;
   ADORecordsetConstructionPtr spConsPtr;
   spConsPtr = m_spADORecordset;
   spConsPtr->get_Rowset(NativeRecordSet);
   return S_OK;
}
测试部分如下:
void CTestDlg::OnTest() 
{
     CoInitialize(NULL);
     IDataAccessorPtr pPtr;
     IUnknown **NativeRecordSet;
    HRESULT hr=pPtr.CreateInstance(__uuidof(DataAccessor));
if (FAILED(hr))
{
_com_error err(hr);
AfxMessageBox(err.ErrorMessage());
return;
}
    pPtr->InitializeADO();
         HRESULT hr2=pPtr->GetRecordSet();
if (FAILED(hr2))
{
          AfxMessageBox("Failure");
}
else
{
         AfxMessageBox("Success");
}
CoUninitialize();
}
问题:  1,GetRecordSet函数在组件里面明明设置了一个参数,可是
         在测试端出现错误,把参数去掉为空,就没有问题了.
       2,参数IUnknown **NativeRecordSet;是为了取得数据.但是这种方式
         怎么能得到具体的返回来的数据呢? 
       3,这样访问数据库还要注意些什么问题,以及了解哪些东西
 在此先多谢大家.     
 


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

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

  • 200-300分求《ProgrammingServer-SideApplicationsforMicrosoftWindows2000》随书源码
  • 300分求无窗口控件windowless怎么使用对话框??
  • 十万火急!!!!!有谁知道那里有控件支持USB设备数据的读取?兄弟有300分奉上!
  • 为什么没人回答,同样的问题(ActiveX,vc,dephi我第三次问了,答对了给300分
  • 300分征求报表OCX\ACTIVEX控件,要求是正规版且无LICENSE问题!能转换为EXCEL文件更好,欢迎有经验者提供,可加到1000分!
  • 在线等,急呀,谁能给我发一个WEB中用ActiveX嵌WORD的例子,送上300分,
  • 300分求:软件做好了,想找个好用的能加入注册码功能的软件,哪位大虾有?
  • 300分相送!!我自己搞的SearchHook为什么有些机能实用,而一些却不行!帮忙搞好的300分相送,另开贴送!
  • !!!另送300分求助!!!在COM+中频繁调用结果集RST操作与XML解析DOM对象,为何内存狂涨不能释放?(跟帖有分)
  • 300分,来者有分:将问题一问到底,关于COM组件访问数据库问题,分不够另给

相关文章

  • 2017-06-04 在用VC开发ActiveX控件OCX时发现注册时必须带一个lic文件,有什么办法可以去掉!急
  • 2017-06-05 ★★★★XP风格控件界面库★★动态库调用错误★★★★
  • 2017-06-05 shellExecute调用一个又返回函数的命令,如何取得它的返回值
  • 2017-06-04 跪求<<COM原理与应用>>例子程序代码,谢谢!
  • 2017-06-05 EnterCriticalSection后,如果边续2次LeaveCriticalSection,会出现什么问题?
  • 2017-06-04 WTL问题,迷茫中!
  • 2017-06-05 请问如何在VC程序中关闭可能已经运行的MicrosoftWord程序?
  • 2017-06-05 菜鸟求教:用户界面线程结束的问题
  • 2017-06-05 ActiveX界面问题求助ing~~
  • 2017-06-04 关于网络视频的问题

文章分类

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

最近更新的内容

    • ActiveX控件开发中属性页问题;
    • 请问vs2005下插件开发,想像VA插件那样显示个toolbar,who有代码给我看一下
    • 想调用按键精灵的自带插件,折腾了一下午没成功。。急……
    • 如何通过浏览器启动专用客户端?其中的过程是怎样的?
    • 关于COM组件的问题?
    • 请问COM+组件与COM组件有什么区别?
    • 谁可以介绍一本讲Com组件的书吗?
    • 关于com中数据类型的使用----vbclient
    • 急!!!!!regsvr32注册DLL失败
    • 如何将资源文件中的二进制文件写到指定目录?100分送了~

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

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