FLY000 发表于 2010-7-31 12:32:55

数据库连接得到的结果集的处理

Dim Rs,Sq
Set Conn = CreateObject("Adodb.Connection")
Set Rs = CreateObject("Adodb.RecordSet")
Conn.ConnectionString="Provider=MSDAORA.1;User ID=irpt411;Password=irpt411;Data Source=MYORCL;Persist 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 = "Selectindex_,useridfrom 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:34

原因知道了
是数据库里只有1条记录,所以改成下面这样就可以了

Dim Rs,Sq
Set Conn = CreateObject("Adodb.Connection")
Set Rs = CreateObject("Adodb.RecordSet")
Conn.ConnectionString="Provider=MSDAORA.1;User ID=irpt411;Password=irpt411;Data Source=MYORCL;Persist 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 = "Selectindex_,useridfrom 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:13

很多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:11

很有意思,我也会试试的:lol :lol

TIB 发表于 2010-8-3 15:43:08

ADO教程:
http://www.w3school.com.cn/ado/index.asp

FLY000 发表于 2010-8-3 17:43:29

原帖由 sterson 于 2010-7-31 22:43 发表 http://bbs.51testing.com/images/common/back.gif
很多ASP或VB连接数据库的教程,都喜欢用Rs.MoveFirst
其实这个是不必要的,记录集打开时,指针是指在第一条记录的
另外我喜欢用
do while not rs.eof
...
rs.movenext
loop

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

使用游标有什么好处咧……

FLY000 发表于 2010-8-3 17:45:23

原帖由 TIB 于 2010-8-3 15:43 发表 http://bbs.51testing.com/images/common/back.gif
ADO教程:
http://www.w3school.com.cn/ado/index.asp

谢谢,很全面
页: [1]
查看完整版本: 数据库连接得到的结果集的处理