数据库:如何在一个程序里使用两个_CRecordset实例

wenson_lin 2002-10-07 09:30:26

我使用ADO,试过用一个
_ConnectionPtr m_pConnection;
两个
_RecordsetPtr m_pRecordset;
_RecordsetPtr m_pRecordset1;

然后这样连接
hr = m_pRecordset.CreateInstance("ADODB.Recordset");
hr = m_pRecordset->putref_ActiveConnection(m_pConnection);

hr = m_pRecordset1.CreateInstance("ADODB.Recordset1");
hr = m_pRecordset1->putref_ActiveConnection(m_pConnection);
编译和链接都没问题,但运行则有问题
我再创建一个 _ConnectionPtr m_pConnection1;
然后这样连接
hr = m_pRecordset.CreateInstance("ADODB.Recordset");
hr = m_pRecordset->putref_ActiveConnection(m_pConnection);
hr = m_pRecordset1.CreateInstance("ADODB.Recordset1");

hr = m_pRecordset1->putref_ActiveConnection(m_pConnection1);
问题依旧。我的两个_ConnectionPtr都是连到同一个数据库的。
我需要在一个数据库里用两个_RecordsetPtr,请问用什么办法解决 ?
...全文
98 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fupinger 2002-10-17
_ConnectionPtr m_pConnection;
try
{
m_pConnection.CreateInstance("ADODB.Connection");
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=MyDB.mdb","","",adModeUnknown);
}
catch(_com_error e)///捕捉异常
{
AfxMessageBox(e.ErrorMessage ());
}


_RecordsetPtr MySet_Ip,MySet_Port,MyRvoice,MyRchanel;
try
{
MySet_Ip.CreateInstance("ADODB.Recordset");
MySet_Ip=m_pConnection->Execute ("SELECT Server_Ip FROM t_Server_Config",&RecordsAffected,adCmdText);
MySet_Port.CreateInstance("ADODB.Recordset");
MySet_Port=m_pConnection->Execute ("SELECT Server_Port FROM t_Server_Config",&RecordsAffected,adCmdText);

MyRvoice.CreateInstance("ADODB.Recordset");
MyRvoice=m_pConnection->Execute ("SELECT Record_Voice FROM t_Record_Voice",&RecordsAffected,adCmdText);
MyRchanel.CreateInstance("ADODB.Recordset");
MyRchanel=m_pConnection->Execute ("SELECT Record_Chanel FROM t_Record_Voice",&RecordsAffected,adCmdText);
}
catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage());///显示错误信息
}

_variant_t Holder_Ip,Holder_Port,Holder_Rvoice,Holder_Rchanel;
try
{
handldata();
}
catch
{
AfxMessageBox(e.ErrorMessage());///显示错误信息
}

MySet_Ip->Close ();
MySet_Port->Close();

MyRvoice->MoveFirst ();
MyRchanel->MoveFirst ();
MyRvoice->Close ();
MyRchanel->Close();

m_pConnection->Close();

这是我完成的一个项目中的部分代码,全部调试通过,没有问题的。

回复
wenson_lin 2002-10-08
我不是同时指向一个数据集的,只是用两个_RecordsetPtr 变量同时指向两个不同的表。
回复
zlxcjy 2002-10-07
不太明白你想干什么,再说清楚些,出了什么问题?

两个_RecordsetPtr是否想指向不同记录?可以实现的,我用过。
回复
Tasehouny 2002-10-07
m_pRecordset1.CreateInstance("ADODB.Recordset1"); ??
是不是有错?“ADODB.Recordset1” ??我觉得应该改成ADODB.Recordset
回复
runnersun 2002-10-07
同时指向一个数据集不行,会发现数据操作违例。
回复
wenson_lin 2002-10-07
是啊,指向两个不太的记录,你用的是什么方法啊,把代码和说明贴出来看一看好吗?
回复
发动态
发帖子
数据库
创建于2007-09-28

3941

社区成员

VC/MFC 数据库
申请成为版主
社区公告
暂无公告