找回密码
 加入
搜索
查看: 7980|回复: 7

[AU3基础] 如何做才能提高读取ACCESS数据库数据的速度?(已解决)

  [复制链接]
发表于 2011-7-27 07:34:21 | 显示全部楼层 |阅读模式
本帖最后由 user3000 于 2011-7-28 20:59 编辑

最近编写个网吧自用的游戏菜单,已经接近尾声,但发现了一个大问题:
直读网维数据库的游戏数据时,游戏菜单启动相当的慢,需要30秒到40多秒钟!
网维用的是access数据库,读取用的是论坛的自定义函数:_accessQueryLike
也试过开新程序,仅仅读取各分类的游戏数据到(内存)数组中,总共时间也要10秒左右!

但试过深蓝的网吧游戏菜单,如果是直读网维,启动并加载游戏数据也就是一两秒钟内的事啊?
如何做才能提高读取ACCESS数据库数据的速度?
传说中的“多进程”代替“多线程”?
请列位指条明路吧!

该问题已解决,但我无法选择到分类“已解决”?
发表于 2011-7-27 20:18:05 | 显示全部楼层
我发现那个UDF,每一次ACCESS操作都执行一次 _DBOPEN,不慢才有鬼。
 楼主| 发表于 2011-7-28 03:34:03 | 显示全部楼层
我发现那个UDF,每一次ACCESS操作都执行一次,不慢才有鬼。
supersp 发表于 2011-7-27 20:18



   您的意思修改一下,只运行一次 _DBOPEN会大大提升效率不成?
发表于 2011-7-28 08:35:45 | 显示全部楼层
$addfld = ObjCreate("ADODB.Connection")
            $addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" &$mdb_data_path & ";Jet Oledb:Database Password=" & $mdb_data_pwd)
         $RS =ObjCreate("ADODB.Recordset")
          $RS.ActiveConnection = $addfld
            $RS.Open ("Select "&$t & " From " & $adTable )     ;$t : 表示一个连接  $adtable :表示的是这个表的名称
           while Not $RS.eof And Not $RS.bof
           if @error =1 Then ExitLoop
            GUICtrlCreateListViewItem ( $RS.Fields (0).value&"|"& $RS.Fields (1).value&"|"& $RS.Fields (2).value&"|"& $RS.Fields (3).value&"|"& $RS.Fields (4).value&"|"& $RS.Fields (5).value&"|"& $RS.Fields (6).value&"|"& $RS.Fields (7).value&"|"& $RS.Fields (8).value&"|"& $RS.Fields (9).value&"|"& $RS.Fields (10).value,$ListView1 ) 
              ; MsgBox(0, "", $RS.Fields (1).value);显示表第一个数据
             $rs.movenext
              WEnd
               $rs.close
              $addfld.Close
 楼主| 发表于 2011-7-28 20:48:54 | 显示全部楼层
今天研究了半天的UDF,把它修改一下,已经达到自己的目的。类似4楼的做法吧。
就是按自己实际需要提取相应的字段值,而不是遍历全部的字段。
还可以把字段值重新排序后再输出!比如,返回值设为:$RS.Fields (5).value & $RS.Fields (0).value

感谢2楼给予的“妙想”和思路!
谢谢4楼的朋友也来帮忙!尽管我是现在才有时间并看到这个回复的!
 楼主| 发表于 2011-7-28 20:52:35 | 显示全部楼层
最的发表心得:

对于我们这样的菜鸟的启示:不要过于迷信UDF的功能!
发表于 2011-11-18 15:42:21 | 显示全部楼层
学习了,也遇到过这样的问题
发表于 2014-5-10 16:48:35 | 显示全部楼层
学习了,也遇到过这样的问题
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-28 04:17 , Processed in 0.188969 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表