找回密码
 加入
搜索
查看: 3791|回复: 9

[网络通信] 【求助】对于SQL的操作有个问题

  [复制链接]
发表于 2012-1-6 10:32:28 | 显示全部楼层 |阅读模式
$addfld = ObjCreate("ADODB.Connection")
$addfld.Open("driver={SQL Server};server=10.1.56.220;uid=sa;pwd=123456;database=ceshi")
$RS = ObjCreate("ADODB.Recordset")
$RS.ActiveConnection = $addfld
$RS.Open("Select * From 测试库")

$nid=$RS.Fields(0).value
MsgBox(4096, "yes", $nid)
        
$RS.close
$addfld.Close

这样只能返回第一行的数据,请问怎么返回第二三四行的?
发表于 2012-1-6 11:04:35 | 显示全部楼层
回复 1# ac5474012


    循环啊!
 楼主| 发表于 2012-1-6 11:08:52 | 显示全部楼层
回复 2# hzxymkb

能给个例子吗?
发表于 2012-1-6 11:31:17 | 显示全部楼层
回复 4# ac5474012

                        $RS.open ("select * from SMA");
                        
                        While (Not $RS.eof And Not $RS.bof);迴圈讀表
                                MsgBox(0, "欄位一", $RS.Fields (0).value,5);顯示第一個欄位 資料 
                                MsgBox(0, "欄位二", $RS.Fields (1).value);顯示第二個欄位 資料 

                                $RS.movenext;下一筆
                        WEnd;結束迴圈讀表
                        $RS.close;關閉數據分表

评分

参与人数 2金钱 +40 收起 理由
ac5474012 + 25 谢谢非常好,但还有个问题。
afan + 15

查看全部评分

发表于 2012-1-6 11:31:37 | 显示全部楼层
本帖最后由 tsys 于 2012-1-6 11:32 编辑

回复 4# ac5474012

以下代码根据此贴修改http://www.autoitx.com/forum.php ... mp;highlight=access
由于本例用于access数据库,不当之处自行修改
使用while循环逐个读取
Func _SQL_to_Array($mdb_data_path,$mdb_data_pwd,$tblname)
                Local $aArray[1][2],$P = 1,$i = 0
                $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
                        $aArray[$i][0] = $RS.Fields (0).value
                        $aArray[$i][1] = $RS.Fields (1).value
                        $i += 1
                        $P += 1
                        ReDim $aArray[$P][2]
                        $rs.movenext
                WEnd
                $rs.close
                $addfld.Close
                Return $aArray
EndFunc    
还有一种方法就是先获取列内的数据总数,然后使用循环读取就可以了:
$RS.Open ("Select count("&$FieldName&") From "&$tblname) 

评分

参与人数 1金钱 +20 贡献 +1 收起 理由
afan + 20 + 1

查看全部评分

发表于 2012-1-6 13:11:06 | 显示全部楼层
回复 4# ac5474012


   楼上的例子都正确的!

评分

参与人数 1金钱 +10 收起 理由
ac5474012 + 10 你就会说正解

查看全部评分

 楼主| 发表于 2012-1-6 14:32:25 | 显示全部楼层
回复 5# kk_lee69
回复  ac5474012
kk_lee69 发表于 2012-1-6 11:31


请问我要是想直接返回第2行的数据要怎么写?
发表于 2012-1-6 15:51:15 | 显示全部楼层
回复 8# ac5474012


    第二行  還是第二筆資料

$RS.Fields (0).value  表示第一行資料
$RS.Fields (1).value 表示第二行資料


第二筆資料就得跑循環了.....

评分

参与人数 1金钱 +20 收起 理由
fbi911 + 20

查看全部评分

发表于 2012-1-6 19:35:43 | 显示全部楼层
$RS.Open ("Select count("&$FieldName&") From "&$tblname)
这个能行吗??
发表于 2012-1-6 20:29:37 | 显示全部楼层
回复 8# ac5474012


    我没有技术啊,只会说正解!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-3 23:26 , Processed in 0.078026 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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