51Testing软件测试论坛

标题: 数据库连接得到的结果集的处理 [打印本页]

作者: FLY000    时间: 2010-7-31 12:32
标题: 数据库连接得到的结果集的处理
Dim Rs,Sq
Set Conn = CreateObject("Adodb.Connection")
Set Rs = CreateObject("Adodb.RecordSet")
Conn.ConnectionString="rovider=MSDAORA.1;User ID=irpt411assword=irpt411;Data Source=MYORCLersist Security Info=False"
Conn.Open
If Conn.State = 0 Then
        Reporter.ReportEvent micFail, "测试连接","数据库连接失败!"
        Conn.Close
        Set Conn = Nothing
Else
        Reporter.ReportEvent micPass, "测试连接","数据库连接成功!"
        Set Rs = CreateObject("Adodb.RecordSet")
        strSql = "Select  index_,userid  from irpt411.IRPT_USERS"
        Rs.Open strSql,Conn
        Rs.MoveFirst
        Do
                Rs.MoveNext
                Reporter.ReportEvent micPass,"数据为:", cstr(Rs(0)) & cstr(Rs(1))
                Reporter.ReportEvent micPass,"数据为:", Rs.Fields(0)+Rs.Fields(1)

        Loop Until Rs.EOF= True
        Rs.Close
        Set Rs = Nothing
        Conn.Close
        Set Conn = Nothing
End If

为什么红色标记的两种方法都得不到结果?运行提示General run error.
作者: FLY000    时间: 2010-7-31 13:54
原因知道了
是数据库里只有1条记录,所以改成下面这样就可以了

Dim Rs,Sq
Set Conn = CreateObject("Adodb.Connection")
Set Rs = CreateObject("Adodb.RecordSet")
Conn.ConnectionString="rovider=MSDAORA.1;User ID=irpt411assword=irpt411;Data Source=MYORCLersist Security Info=False"
Conn.Open
If Conn.State = 0 Then
        Reporter.ReportEvent micFail, "测试连接","数据库连接失败!"
        Conn.Close
        Set Conn = Nothing
Else
        Reporter.ReportEvent micPass, "测试连接","数据库连接成功!"
        Set Rs = CreateObject("Adodb.RecordSet")
        strSql = "Select  index_,userid  from irpt411.IRPT_USERS"
        Rs.Open strSql,Conn
        Rs.MoveFirst
        Do
                Reporter.ReportEvent micPass,"数据为:", cstr(Rs(0)) & cstr(Rs(1))
                Reporter.ReportEvent micPass,"数据为:", cstr(Rs.Fields(0))+cstr(Rs.Fields(1))
                Rs.MoveNext
        Loop Until Rs.EOF= True
        Rs.Close
        Set Rs = Nothing
        Conn.Close
        Set Conn = Nothing
End If
作者: sterson    时间: 2010-7-31 22:43
很多ASP或VB连接数据库的教程,都喜欢用Rs.MoveFirst
其实这个是不必要的,记录集打开时,指针是指在第一条记录的
另外我喜欢用
do while not rs.eof
...
rs.movenext
loop

还有一个地方,很多资料也喜欢直接这样写
Rs.Open strSql,Conn
这样并不是一个很好的编程习惯,

我建议记录集打开时,同时指定它的游标类型
比如:
rs.Open strSql,Conn,1,1

rs.Open strSql,Conn,2,3

等。。大家有兴趣可以了解一下记录集游标类型,呵呵。
作者: mao303mao    时间: 2010-8-2 20:02
很有意思,我也会试试的
作者: TIB    时间: 2010-8-3 15:43
ADO教程:
http://www.w3school.com.cn/ado/index.asp
作者: FLY000    时间: 2010-8-3 17:43
原帖由 sterson 于 2010-7-31 22:43 发表
很多ASP或VB连接数据库的教程,都喜欢用Rs.MoveFirst
其实这个是不必要的,记录集打开时,指针是指在第一条记录的
另外我喜欢用
do while not rs.eof
...
rs.movenext
loop

还有一个地方,很多资料也喜欢直 ...


使用游标有什么好处咧……
作者: FLY000    时间: 2010-8-3 17:45
原帖由 TIB 于 2010-8-3 15:43 发表
ADO教程:
http://www.w3school.com.cn/ado/index.asp


谢谢,很全面




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2