• 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 > COM用ADO访问数据库,vb测试通过,vc导入类型库就编译错误

COM用ADO访问数据库,vb测试通过,vc导入类型库就编译错误

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

佚名通过本文主要向大家介绍了vb ado,vb ado控件,vb ado连接数据库,vb6.0 ado控件,vb ado excel等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: COM用ADO访问数据库,vb测试通过,vc导入类型库就编译错误
描述:

我在组件里用到msado15.dll访问SQL,vb测试通过,正常访问数据库,但是我到vc里,一导入那组件的类型库就报错,错误如下:
e:\Documents and Settings\vigorpro\My Documents\Visual Studio Projects\DatabaseListView\DatabaseListView\Release\getrec.tlh(48) : error C2146: 语法错误 : 缺少“;”(在标识符“GetRecordset”的前面)
e:\Documents and Settings\vigorpro\My Documents\Visual Studio Projects\DatabaseListView\DatabaseListView\Release\getrec.tlh(48) : error C2501: “GETRECLib::IQueryRec::_RecordsetPtr” : 缺少存储类或类型说明符
e:\Documents and Settings\vigorpro\My Documents\Visual Studio Projects\DatabaseListView\DatabaseListView\Release\getrec.tlh(49) : warning C4183: “GetRecordset”: 缺少返回类型;假定为返回“int”的成员函数
e:\Documents and Settings\vigorpro\My Documents\Visual Studio Projects\DatabaseListView\DatabaseListView\Release\getrec.tli(14) : error C2143: 语法错误 : 缺少“;”(在“GETRECLib::IQueryRec::GetRecordset”的前面)
e:\Documents and Settings\vigorpro\My Documents\Visual Studio Projects\DatabaseListView\DatabaseListView\Release\getrec.tli(14) : error C2433: “_RecordsetPtr” : 不允许在数据声明中使用“inline”
e:\Documents and Settings\vigorpro\My Documents\Visual Studio Projects\DatabaseListView\DatabaseListView\Release\getrec.tli(14) : error C2501: “_RecordsetPtr” : 缺少存储类或类型说明符
e:\Documents and Settings\vigorpro\My Documents\Visual Studio Projects\DatabaseListView\DatabaseListView\Release\getrec.tli(18) : error C2064: 项不会计算为接受 2 个参数的函数
组件很简单,就是一个方法里:
STDMETHODIMP CQueryRec::GetRecordset(BSTR queryCmd,_Recordset **RecordsetPtr)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())
CoInitialize(NULL);
// AfxOleInit();
_ConnectionPtr pCon(__uuidof(Connection));
pCon->Open(_T("Provider=SQLOLEDB.1;Data source=127.0.0.1;Initial Catalog=Northwind"),_T("sa"),_T(""),adOpenUnspecified);
_CommandPtr pCmd(__uuidof(Command));
pCmd->ActiveC /> CString command(queryCmd);
pCmd->CommandText=command.operator LPCTSTR();
_RecordsetPtr rptr(__uuidof(Recordset));
rptr->PutRefSource(pCmd);
_variant_t vNull(DISP_E_PARAMNOTFOUND,VT_ERROR);
rptr->Open(vNull,vNull,adOpenDynamic,adLockOptimistic,adCmdText);
rptr->QueryInterface(__uuidof(_Recordset),(void**)RecordsetPtr);
CoUninitialize();
return S_OK;
}
觉得奇怪,vb没问题,不知道是怎么的,先谢谢^^


解决方案1:

按上面几位的试试,应该可以解决问题。如果不行,你把工程发给我看看,QQ:361577203,
邮箱:hushuangyan74@163.com

解决方案2:

导入ADO库的语句:
#import "C:\Program Files\Common Files\System\ado\msado15.dll" 
no_namespace rename("EOF","adoEOF")
就会出现你所说的错误,改正如下,一切OK:
#import "C:\Program Files\Common Files\System\ado\msado15.dll" \
no_namespace rename("EOF","adoEOF")

解决方案3:

1.stdafx.h中加入
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") 
2。app文件的InitInstance中加入
if(S_OK!=OleInitialize(NULL))
{
AfxMessageBox("初始化COM组件库错误");
}
下面就是数据库操作
_ConnectionPtr pConn;
_RecordsetPtr  pRs;
CString strSQL;
pConn.CreateInstance(__uuidof(Connection));
pConn->CursorLocation=adUseClient;
strSQL="Provider=SQLOLEDB;Server=Gooyan;DataBase=SkillsBox;UID=sa;PWD=aaaaaaaa";
pConn->Open(_bstr_t(strSQL),"","",-1);
pRs.CreateInstance(__uuidof(Recordset));
pRs->CursorLocation=adUseClient;
pRs->PutActiveConnection(pConn.GetInterfacePtr());
pRs1.CreateInstance(__uuidof(Recordset));
pRs1->CursorLocation=adUseClient;
pRs1->PutActiveConnection(pConn.GetInterfacePtr());
strSQL="select * from catalog order by cataid";
pRs->Open(_bstr_t(strSQL),vtMissing,adOpenDynamic,adLockBatchOptimistic,adCmdText);


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

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

  • 请教:ado读取数据库整形数据
  • 求ado实例(急)
  • ado+Excel
  • 在其他电脑上ado连接数据库失败
  • 求教ADO,DataGrid与SQL的问题
  • Ado读数据库,遍历1W以上数量级别的记录为何如此慢
  • 关于ADO与access数据库连接的问题求教(都研究了八天了)
  • 在子线程中创建ADO的实例为什么会出错?
  • 为什么线程中无法建立ADO连接实例?求救!
  • ADO连接ACCESS数据库程序,在某些系统上无法创建创建Connection对象

相关文章

  • 2017-06-05 一个有关#pragmadata_seq的简单小问题(顶者有分)
  • 2017-06-04 如何得到OCX控件中发送事件的内容
  • 2017-06-05 在线程里调用进度条显示的问题急!
  • 2017-06-05 LTOCX10NOCX具体是什么东西?
  • 2017-06-04 ATL无窗口控件在失去焦点时不显示控件图片
  • 2017-06-04 高手来看-------------调用一个语音聊的客户端控件时,总出现IE,应用程序错误。
  • 2017-06-05 请大家帮我看看这个,很让我头疼的问题!
  • 2017-06-05 为什么不立即执行啊?郁闷死我了啊
  • 2017-06-04 有没有office2003的sdk?
  • 2017-06-05 有什么命令或者工具可以检测到dll的版本吗?

文章分类

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

最近更新的内容

    • 如何用ATL写一个excel2003的插件?
    • 关于控件的license的问题
    • VS2010调用vc60出现问题
    • 为什么这个STDMETHODLoadLPPROPERTYBAGpPropBag,LPERRORLOGpErrorLog;函数执行不到呢?
    • 急,如何实现这样的进程通讯,谢谢
    • 该死的MSDN!谁能帮帮我!(GetMonitorInfo与winuserh
    • 一个用ATL写的COM程序,编译后Link时通不过。有谁能帮我?
    • visualstudio2010开发DCOM程序
    • 如何在窗口程序中创建ActiveX控件?
    • ###ActiveX控件返回字符串给调用者如下写法正确吗?###

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

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