RECORDSET的GetRows方法返回_variant_t变量空间异常增大问题

yeaisheng 2011-05-27 12:10:17
在使用m_pRecordset获取数据的时候,原来已对SAFEARRAY数组分配了内存,但在跑到GETROWS一行的时候,内存又不断增加。此外,发觉GETROWS指令执行速度很慢,几万条记录就花了几分钟了,不知道问题在哪里呢,请各位帮忙看看。

m_pRecordset->Open(mStrSQL, m_pConnection.GetInterfacePtr(), adOpenKeyset, adLockReadOnly, adCmdText);//打开时的设置

......省略中间的一些代码
const dim = 2;//二维数组
SAFEARRAY* Saf;//安全数组
SAFEARRAYBOUND Bound[dim];
Bound[0].lLbound = 0;
Bound[0].cElements = ColCount;
Bound[1].lLbound = 0;
Bound[1].cElements = Recnum;

Saf = SafeArrayCreate(VT_VARIANT, dim, Bound);
_variant_t vartemp;
vartemp.vt = VT_ARRAY|VT_UI1;
vartemp.parray = Saf;

vartemp = m_pRecordset->GetRows(adGetRowsRest);//批量读取数据至_variant_t
...全文
180 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyq5945 2011-06-01
  • 打赏
  • 举报
回复
那应该是解析的问题
m_pRecordset->GetRows(adGetRowsRest)就是返回一个_variant_t.
int nValue = 10;
nValue = GetOneIntValue();
现在nValue就是GetOneIntValue的返回值了。
yeaisheng 2011-06-01
  • 打赏
  • 举报
回复
还是没明白,你有示例代码么?
zyq5945 2011-05-31
  • 打赏
  • 举报
回复
_variant_t var = m_pRecordset->GetRows(adGetRowsRest);//批量读取数据至_variant_t
不需要自己设置,直接解析就行了。
yeaisheng 2011-05-31
  • 打赏
  • 举报
回复
_variant_t var = m_pRecordset->GetRows(adGetRowsRest);//批量读取数据至_variant_t
不需要自己设置,直接解析就行了

这个试了一下,好像会出错啊...
yeaisheng 2011-05-31
  • 打赏
  • 举报
回复
SafeArrayCreate对应的释放函数SafeArrayDestroy有没有调用

这个与我的问题没太大关系啊,还未到内存就不断增加了
zyq5945 2011-05-31
  • 打赏
  • 举报
回复
SafeArrayCreate对应的释放函数SafeArrayDestroy有没有调用
yeaisheng 2011-05-31
  • 打赏
  • 举报
回复
怎么了,没有人懂这个啊?

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧