社区
数据库
帖子详情
关于vc用ado访问数据库的问题,在线等。。。
cryptonym
2005-07-11 02:26:35
我用的是sqlserver2000,为什么我的Rs访问GetEditMode()的时候老是出下面这个错误呢?
{"Unknown error 0x800A0BCD"}
...全文
334
19
打赏
收藏
关于vc用ado访问数据库的问题,在线等。。。
我用的是sqlserver2000,为什么我的Rs访问GetEditMode()的时候老是出下面这个错误呢? {"Unknown error 0x800A0BCD"}
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dearlee_01
2005-07-29
打赏
举报
回复
GetEditMode() != adEditNone
AntonlioX
2005-07-28
打赏
举报
回复
UP
cryptonym
2005-07-28
打赏
举报
回复
看来是美人知道了。准备揭帖了。
cryptonym
2005-07-18
打赏
举报
回复
楼上的,不是出在那一行。加上了一样出错。
cryptonym
2005-07-14
打赏
举报
回复
看看我的那两行函数再回答问题吧,老大
clovexmu
2005-07-14
打赏
举报
回复
估计代码出在这一段:
while(!recordset->AdoEOF())
{
recordset->MoveNext();
}
// recordset.MoveFirst();
将上面的一句加上去就不会出错了。
clovexmu
2005-07-14
打赏
举报
回复
我的是Access 2000,出现的问题是一样的。
clovexmu
2005-07-14
打赏
举报
回复
我也有同样的问题,不过我如果只读方式打开记录机就不会有这个问题了。
cryptonym
2005-07-12
打赏
举报
回复
是这样的,我打开一个记录集,等我对这个记录集操作完成以后我要关闭这个记录集。
在关闭的时候我要调用GetEditMode()看看当前这个记录集是不是还有编辑或者增加的操作没有完成,如果都完成了就关闭,如果还有动作没有完成就先结束了那个编辑或者增加的动作再关闭。
现在就是在我调用GetEditMode查看当前记录集的动作的时候出上面的错误。不知为何。
gooyan
2005-07-12
打赏
举报
回复
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)) //或者CoInitialize()
{
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);
HR-TANG
2005-07-12
打赏
举报
回复
UP
saliors
2005-07-12
打赏
举报
回复
把问题说清楚一点,可以的话,把相关的程序贴一下
saliors
2005-07-12
打赏
举报
回复
你不会只在那里调用了GetEditMode吧,我怀疑是别的地方Colse了记录集,然后又调用GetEditMode函数,不妨一试?
cryptonym
2005-07-12
打赏
举报
回复
不用吧,前面已经判断了阿在void CAdoRecordSet::Close()里
if (m_pRecordset != NULL && m_pRecordset->State != adStateClosed)
saliors
2005-07-12
打赏
举报
回复
哦,你用的是ADO啊,那就改成m_pRecordset->State == adStateOpen
cryptonym
2005-07-12
打赏
举报
回复
m_pRecordset->IsOpen()
没哟这个方法吧?
saliors
2005-07-12
打赏
举报
回复
改成这样看看
EditModeEnum CAdoRecordSet::GetEditMode()
{
ASSERT(m_pRecordset != NULL);
try
{
if (m_pRecordset != NULL && m_pRecordset->IsOpen())
{
return m_pRecordset->GetEditMode();
}
}
catch (_com_error e)
{
//这里出错,而且出错的errormessage是空字符串。
CString str=e.ErrorMessage();
return adEditNone;
}
return adEditNone;
}
cryptonym
2005-07-12
打赏
举报
回复
void CAdoRecordSet::Close()
{
try
{
if (m_pRecordset != NULL && m_pRecordset->State != adStateClosed)
{
if (GetEditMode() != adEditNone) CancelUpdate();
m_pRecordset->Close();
}
}
catch (const _com_error& e)
{
}
}
EditModeEnum CAdoRecordSet::GetEditMode()
{
ASSERT(m_pRecordset != NULL);
try
{
if (m_pRecordset != NULL)
{
return m_pRecordset->GetEditMode();
}
}
catch (_com_error e)
{
//这里出错,而且出错的errormessage是空字符串。
CString str=e.ErrorMessage();
return adEditNone;
}
return adEditNone;
}
saliors
2005-07-12
打赏
举报
回复
没有相关代码的话,怎么知道什么出错了呢。把出错的地方贴一下吧。
正常调用GetEditMode是不会有错误的,我想你是不是已经把记录集Close了再调用GetEditMode,这样就会出错,你可以在GetEditMode前一句用IsOpen()看看记录集是不是打开的。
VC
用
ADO
访问
数据库
全攻略
VC
用
ADO
访问
数据库
全攻略
VC
用
ADO
访问
数据库
全攻略
VC
用
ADO
访问
数据库
VC
用
ADO
访问
数据库
全攻略
VC
开发用
ADO
访问
数据库
详尽攻略
VC
开发用
ADO
访问
数据库
详尽攻略.十分有用
VC
封装
ADO
访问
数据库
的代码实例
VC
封装
ADO
访问
数据库
的代码实例。可以直接运行,支持MFC技术。
VC
通过
ADO
访问
ACCESS
数据库
VC
++6.0 通过
ADO
方式直接连接ACCESS
数据库
,对ACCESS
数据库
进行操作。
数据库
4,011
社区成员
39,816
社区内容
发帖
与我相关
我的任务
数据库
VC/MFC 数据库
复制链接
扫一扫
分享
社区描述
VC/MFC 数据库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章