注册 登录
编程论坛 VB6论坛

窗体加载时,用ADODC快还是SQL语句快?

wxflw 发布于 2012-10-30 14:37, 335 次点击
如题
3 回复
#2
wxflw2012-10-30 15:23
加载窗体时有时候需要读取数据库表格信息加载到窗体中,用哪种方式比较好?用DO。。。loop读取数据库窗口加载信息的时候如果读取数据库条数比较多那么打开窗体时加载时间就要多费时间了,这个怎么处理?有些固定的条件可以在程序启动的时候在类模块中用变量形式预先存储在变量中然后在窗体控件需要的时候直接加载而不频繁读取数据库吗?比如我建了一个楼层的表:
楼层
1
2
3
4
5
。。
100
必须要用表格,因为在程序运行后随时需要改变数据,楼层是加载到combo1中的!用DO......loop的话要花点时间读取,每次卸载窗体后再打开就要再次加载,很费事。有好方法指点一下啊!


[ 本帖最后由 wxflw 于 2012-10-30 15:25 编辑 ]
#3
风吹过b2012-10-30 15:39
如果需要读的数据特别多,可以考虑使用缓存和后台加载。
缓存:进入程序时,读过一遍数据后,把这些数据写到临时文件中或者保存到 数组中。数据量大的情况下建议使用缓存。
后台加载:计算好除去这些数据的加载时间,然后设置好定时器,载入窗体后,靠定时器调用加载程序。这种情况下,用户一般不容易发现数据在窗体出现时并没有完全加载好。
如果你会用多线程的话,那么加载窗体后,开一个新的线程,加载所有的数据,加载完成后,结束线程。(VB6对多线程支持不好)。

你说的使用类模块中用变量预先存储。如果这些数据在程序编制过程中就不再改变的情况下是可以的。如果在运行过程中,还是有可能被修改, 那就要么使用临时表,要么使用临时文件。
临时文件比临时表要快。

如楼层数据:你生成的临时文件内容可能是:
1,2,3,4,5......,100
那读取时,一性次读取整个文件,然后使用 split 分解到数组里,然后对数组进行操作。
修改时,直接修改某个元素,写临时文件时,使用 join 把数组元素拼成一个字符串,然后一次性写入文件。
-------------------------------
一般数据库里的字典,如果元素比较少,如 1000以内,我都是从数据库读出来放数组,需要时再加载到控件中去。
#4
wxflw2012-10-30 15:59
这个好!谢谢!
1