vector用来处理数据库?

不倒的土豆 2015-11-06 02:47:40
最近需要处理数据库。
我这样做:定义一个结构体RecordData,用来存放一行数据库内容,再定义一个vector<RecordData> VecRecData,存放所有从数据库查到的数据。

但是出现了问题,如果数据库行数太多(百万级),vector会报错,好像是内存分配错误。难道大数据量不能用vector?有没有其他解决方法?

求大神赐教
...全文
237 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2015-11-09
  • 打赏
  • 举报
回复
你这么大数据量,vector装不下,取决于你内存,以及64位OS等,不然就只能用指针,。或者数据库分页机制,一次只取一部分内容
不倒的土豆 2015-11-09
  • 打赏
  • 举报
回复
嗯,直接操作指针的确方便,虽然有时候不太安全(这种不安全一般都是人为的)。就按大神们的方法吧
赵4老师 2015-11-09
  • 打赏
  • 举报
回复
限制数据库操作返回的记录条数。
worldy 2015-11-06
  • 打赏
  • 举报
回复
引用 6 楼 XuePiaoFei1 的回复:
[quote=引用 4 楼 worldy 的回复:] ADO记录集对象能帮你管理好你想访问的数据库中的数据,你又何苦装进别的套子里?
主要是分析记录集,然后显示到CListCtrl中。CListCtrl还是分页的。我想把记录集中的数据转存,就可以点“上一页”或“下一页”来更新CListCtrl内容了。记录集似乎不能直接定位某一行记录吧?如:我想访问第10001行数据,可以直接定位吗?[/quote] 可以定位,但位置和Sort属性设置有关,也可以使用绝对位置
不倒的土豆 2015-11-06
  • 打赏
  • 举报
回复
引用 6 楼 XuePiaoFei1 的回复:
[quote=引用 4 楼 worldy 的回复:] ADO记录集对象能帮你管理好你想访问的数据库中的数据,你又何苦装进别的套子里?
主要是分析记录集,然后显示到CListCtrl中。CListCtrl还是分页的。我想把记录集中的数据转存,就可以点“上一页”或“下一页”来更新CListCtrl内容了。记录集似乎不能直接定位某一行记录吧?如:我想访问第10001行数据,可以直接定位吗?[/quote] 号吧,我刚才试了下,_RecordsetPtr指针能定位。_RecordsetPtr pRes->Move(10000).再一次while循环就到了10001行。
不倒的土豆 2015-11-06
  • 打赏
  • 举报
回复
引用 4 楼 worldy 的回复:
ADO记录集对象能帮你管理好你想访问的数据库中的数据,你又何苦装进别的套子里?
主要是分析记录集,然后显示到CListCtrl中。CListCtrl还是分页的。我想把记录集中的数据转存,就可以点“上一页”或“下一页”来更新CListCtrl内容了。记录集似乎不能直接定位某一行记录吧?如:我想访问第10001行数据,可以直接定位吗?
不倒的土豆 2015-11-06
  • 打赏
  • 举报
回复
引用 3 楼 paschen 的回复:
和容器没关,数据太多,你能分配这么多内存,就算能也太不经济了 考虑分段获取之类的,把暂时不用的转存到硬盘等
想把数据显示到CListCtrl中,保存到文件后,再读取还得重新分析数据,毕竟有200个字段啊。填充时感觉比较慢。 不过个人认为这是个不错的方法。
worldy 2015-11-06
  • 打赏
  • 举报
回复
ADO记录集对象能帮你管理好你想访问的数据库中的数据,你又何苦装进别的套子里?
paschen 2015-11-06
  • 打赏
  • 举报
回复
和容器没关,数据太多,你能分配这么多内存,就算能也太不经济了 考虑分段获取之类的,把暂时不用的转存到硬盘等
不倒的土豆 2015-11-06
  • 打赏
  • 举报
回复
引用 1 楼 lsq19871207 的回复:
你算一下呗,一个RecordData数据结构占多少字节,然后乘以100W,看看是多少内存空间 理论上你肯定不能这么搞的,你一次取百万行的数据库数据,各个方面压力都很大啊,从数据库查询到网络带宽再到硬件内存,更何况UI显示都费劲
哦,数据库有201个字段,一个CString时间,如:2015-10-2 12:15:20,其他都是float,想想就害怕。 数据库是不能改了。 有没有更好的办法来处理呢?
信阳毛尖 2015-11-06
  • 打赏
  • 举报
回复
你算一下呗,一个RecordData数据结构占多少字节,然后乘以100W,看看是多少内存空间 理论上你肯定不能这么搞的,你一次取百万行的数据库数据,各个方面压力都很大啊,从数据库查询到网络带宽再到硬件内存,更何况UI显示都费劲

4,011

社区成员

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

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