请问BindingNavigator控件能否胜任海量数据库记录的情况??

zhoupc88 2010-01-14 10:12:57
桌面数据库应用程序。

由于在采用BindingNavigator控件来作数据库窗体的导航工具栏时,在窗体的Load事件中,要写上 TableAdapter.Fill(DataSet) 这句代码。即在窗体加载时,便把后台数据表中的记录全都下载下来、填充到本地的DataSet中去。

这让我产生一个严重担心:在数据库中的数据表记录数异常庞大的时候,这样做是否将导致窗体的加载过程异常漫长,从而严重影响用户使用效果??

我们都知道,良好的数据库应用程序,无论后台数据库的记录数如何庞大,其保证前台桌面程序的响应速度不会太受影响的核心诀窍就是:弱水三千,我只取一瓢饮。也就是每次只下载一条记录、或只下载自己需要用到的少量记录到前台来。随用随取、不用不取。

而现在,这条Fill()语句却让我很是担心:在将来记录数达到海量时的窗体加载速度问题。

因此向各位有经验的大侠求教:我担心的这个问题是否确实会出现?

如果果真如此的话,那么我将不得不放弃BindingNavigator这个虽然很方便、但却有大隐患的东东,而自己麻烦一点、手工做一个导航工具栏。而如果并不会出现我担心的那种情况的话,那就最好了!

谢谢!!
...全文
50 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhoupc88 2010-01-14
  • 打赏
  • 举报
回复
感谢namhyuk!

可是,如果不先用TableAdapter.Fill()把记录读到本地数据集中来,BindingNavigator又如何起到导航作用?
namhyuk 2010-01-14
  • 打赏
  • 举报
回复
其实这个问题的关键是DataAdapter.Fill(),和BindingNavigator倒是没什么大关系。

我知道楼主的意思。

原则上当然是尽可能不要把数据全读进来,只是把最可能用到的那部分读进来。

如果非要把所有数据都读进来,那就用异步的方式读取,不要让读取的动作阻碍UI线程(也就是读取数据库,程序界面假死)。这方面可以参考delegate.BeginInvoke();delegate.EndInvoke()等等相关的内容,也就是委托的异步调用。

16,549

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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