找回密码
 加入
搜索
查看: 1563|回复: 6

[效率算法] 数据库连接写法不同,差异在哪[已解决]

  [复制链接]
发表于 2017-9-13 16:42:31 | 显示全部楼层 |阅读模式
本帖最后由 xyhqqaa 于 2017-9-14 08:14 编辑
$DB_Provider="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & @ScriptDir & "\fdeam.mdb"
$DB_ado = ObjCreate("ADODB.Connection")
$DB_ado.Open($DB_Provider)

$sqlstr &= " and format(购置日期,'yyyymmdd') BETWEEN '"&_datefomat(GUICtrlRead($Date1))&"' AND '"&_datefomat(GUICtrlRead($Date2))&"'"
$DB_rec = _SelectData($sqlStr)
        If Not IsArray($DB_rec) Then
                MsgBox(48,"提示!","没有符合要求的记录,请更改查询条件!")
                Return False
        EndIf

(上面是从中摘录,代码太长,怕看起来乱糟糟的)

Func  _SelectData($sqlstr) ;查询数据库 ,返回数组,宏保存记录个数
        Local $ret="null"
    $RS = ObjCreate("ADODB.Recordset")
        With $RS
                .Source=$sqlstr
                .ActiveConnection=$DB_ado
        EndWith
    $RS.Open ()
        If $Rs.bof And $Rs.eof Then
                SetError(1)
        Else
                SetError(0)
                $ret=$RS.GetRows
        EndIf
        $Rs.close()
        Return $ret
EndFunc
$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 " & $tblname)
        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(5).value & "|" & $RS.Fields(4).value & "|" & $RS.Fields(7).value, $ListView1)
                $RS.movenext
        WEnd
        $RS.close
        $addfld.Close
以上是两段数据库连接的代码,我在论坛看到的例子,我想请问大哥们,这两段代码功能差异在哪。第一段代码很简洁,这样写好吗。菜鸟求指教
发表于 2017-9-13 17:03:38 | 显示全部楼层
回复 1# xyhqqaa

第一段程式 你應該沒有提供完整吧

第一段程式  沒有任何連接的 資料庫的位置

第二段
  $addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_data_path & ";Jet Oledb:Database Password=" & $mdb_data_pwd)   這邊連接的 MDB
发表于 2017-9-13 20:25:20 | 显示全部楼层
回复 1# xyhqqaa


所以嚕  你說第一段比較簡潔  我倒覺得 第二段比較簡潔

其實這兩種寫法沒啥不同

第一段是有UDF 的寫法  比較傳統 也比較接近標準ADOBD 的寫法

第二段 其實 等同第一段的 核心取出後的寫法

$RS.Open( SQL 語法 )

就這樣就可以得到所有的
不用 參數代來代去的
 楼主| 发表于 2017-9-14 08:13:58 | 显示全部楼层
回复 3# kk_lee69


    谢谢kk_lee69大哥,昨天确实是我看的不详细,仔细对比了下,确实第一段有点绕来绕去,第二段之观点。。。谢谢您。。了解了。。谢谢
发表于 2017-9-14 09:10:27 | 显示全部楼层
回复 4# xyhqqaa

可以參考一下 這篇

http://www.autoitx.com/thread-30083-1-1.html
 楼主| 发表于 2017-9-15 10:08:48 | 显示全部楼层
回复 5# kk_lee69


    学习了!
发表于 2017-9-18 08:57:10 | 显示全部楼层
这是什么数据库?我觉得sqlite还能看下,这个压根看不懂
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-18 18:36 , Processed in 0.072412 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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