我写VC+ADO+ACCESS写个东东,ACCESS中会存放比较多的数据记录(几千或几万条),读出来后,用CTreeCtrl显示!他们是根树,还是树叉同自己定义的NoteID和ParentID决定的!我的树的初始化的办法是,先得到NoteiD最大值,然后根据这个值生成一个数姐,用以下代码进行数据库的读取并插入到树中:while(!m_pRecordset->adoEOF)///读取 {
vNoteID = m_pRecordset->GetCollect("NoteID");
vNoteText = m_pRecordset->GetCollect("NoteText");
vParentID = m_pRecordset->GetCollect("ParentID");
vNoteType = m_pRecordset->GetCollect("NoteType");
//父级项句柄是 hSubItem[vParentID.lVal]
hItem= hSubItem[vParentID.lVal];
item=vNoteID.lVal;
hSubItem[item]=m_wndTreeCtrl.InsertItem((LPCTSTR)(_bstr_t)vNoteText,vNoteType.lVal,vNoteType.lVal,hItem);//插入树叉
问题是,hSubItem[ ]这个数组是根据ACCCESS数据库中数据记录最大ID值生成的,如果这个ID值变得非常大,生成的数组也会非常大,这样影响内存的使用和效率!还有,这个“树”在使用中要经常删除和写入记录,这样的话,这个ID值会越来越大,这个ID值是自动编号的。他每次插入的值都会比前一个ID值大。而就算前面的一些记录被删掉很多,这个ID值也不会变小。
这样用的时间越长,内存使用的效率就会越差。哪位大哥能帮我解决一下!谢谢了!
vNoteID = m_pRecordset->GetCollect("NoteID");
vNoteText = m_pRecordset->GetCollect("NoteText");
vParentID = m_pRecordset->GetCollect("ParentID");
vNoteType = m_pRecordset->GetCollect("NoteType");
//父级项句柄是 hSubItem[vParentID.lVal]
hItem= hSubItem[vParentID.lVal];
item=vNoteID.lVal;
hSubItem[item]=m_wndTreeCtrl.InsertItem((LPCTSTR)(_bstr_t)vNoteText,vNoteType.lVal,vNoteType.lVal,hItem);//插入树叉
问题是,hSubItem[ ]这个数组是根据ACCCESS数据库中数据记录最大ID值生成的,如果这个ID值变得非常大,生成的数组也会非常大,这样影响内存的使用和效率!还有,这个“树”在使用中要经常删除和写入记录,这样的话,这个ID值会越来越大,这个ID值是自动编号的。他每次插入的值都会比前一个ID值大。而就算前面的一些记录被删掉很多,这个ID值也不会变小。
这样用的时间越长,内存使用的效率就会越差。哪位大哥能帮我解决一下!谢谢了!
解决方案 »
- CDC::FromHandle出错,提示m_hBitmap !=0
- VS2005如何在WIN32实现SOCKET网络服务端与多客户端通信
- 对话框属性 condition
- 关于OnCtlColor函数的问题.........
- 想用MFC做一个类似QQ音乐那样的光标放上去就出现,离开就消失的工具栏
- 多表嵌套查询,返回需要的记录集
- MDI在程序启动时怎么可以不显示子窗体?
- 如何初始化comboBox?
- 就在MyButton.h里写了几个变量居然报错?
- 关于几个函数的问题
- 我在台式机上用串口进行通信,没有问题,相同的程序用笔记本电脑的USB转232通,就会有问题,通不上,请问可能是什么问题?
- 急!!!如何在视图上画一个线后,对这个线进行鼠标响应,比如当鼠标移上去时改变线的颜色
假如是一万,10千*100字节=1M,对内存来说,小意思啦。
对于long型的ID,不必关心它的大小,
至于删除插入,对于固定大小空间的操作,堆会处理好的,
如果你确实需要整理,可以定期的做:
首先计算存储树的所有空间大小,一次动态申请,将树的结点逐一转移,并释放原来的所有结点。
比如:我现在往数据库中存了一万条数据,这时的的数据ID最大值为1,000,在我删除五千条后,再写入五千条,这时的数据还是一万条,但是数据ID最大值就会变成15,000。像这样的操作如果多了的话,不知道这个ID值会变得多大。
初始化树叉的数组是根据这个ID值生成的,如果这个值变成了几百万或更多时,真不知道该怎么办!
(130697) - You can use the new TreeView Common Control to display a hierarchical list of items. This new control is available for Win32-based applications running under Windows NT or Windows 95. Applications typically use this control to display a list of items... http://support.microsoft.com/default.aspx?scid=kb;en-us;130697