用记录集显示记录

记录集可以用来代表表中的记录。与表一样，一个记录集包含一条或多条记录（行），每个记录包括一个或多个域（字段）。在任何时刻，只有一条记录是当前记录。

要创建记录集对象的一个实例，你可以使用连接对象的Execute()方法。当你用Execute()方法从一个数据库返回查询结果时，一个记录集对象会被自动创建。这里有一个例子：

<%

Set MyConn=Sever.CreateObject(

“ADODB.Connection”)

MyConn.Open

“FILEDSN=d:\Program Files\

Common Files\ODBC\Data Sources\MyData.dsn

”

Set RS=MyConn.Execute(

“SELECT * FROM Mytable”)

RS.Close

MyConn.Close

%>

在这个例子中，使用一个SQL SELECT语句从一个表Mytable中返回了所有的记录。Execute()方法返回一个记录集。在这个脚本中，该记录集被分配给变量RS，然后关闭了这个记录集。最后，关闭与数据库的连接。

记录集中的每一条记录都对应于表Mytable中的一条记录。要显示记录集中的所有记录，你只要简单地做一个循环就可以，如下例所示：

<%

Set MyConn=Sever.CreateObject(

“ADODB.Connection”)

MyConn.Open

“FILEDSN=d:\Program Files\

Common Files\ODBC\Data Sources\MyData.dsn

”

Set RS=MyConn.Execute(

“SELECT * FROM Mytable”)

WHILE NOT RS.EOF

Response.Write(

“<BR>”&RS(“Mycolumn”))

RS.MoveNext

WEND

RS.Close

MyConn.Close

%>

在这个例子中，WHILE

……WEND循环用来扫描记录集RS中的每一条记录，把每个记录的Mycolumn域输出到浏览器。这段脚本显示了表Mytable中的所有记录。

当一个记录集对象中收集了数据时，当前记录总是第一条记录。在上面的例子中，调用了记录集对象的MoveNext方法，使当前记录移到下一条记录。当所有的记录都显示完时，记录集对象的EOF属性的值将变为true，从而退出WHILE

……WEND循环。

一个记录集对象有一个域集合，包含一个或多个域对象。一个域对象代表表中的一个特定的字段。例如，在上面的脚本中，使用了表达式RS(

“Mycolumn”)来显示字段Mycolumn。实际上，你可以通过许多中途径显示一个字段的值。下面的每一个表达式都可以显示字段Mycolumn的值：

RS(

“Mycolumn”)

RS(0)

RS.Fields(

“Mycolumn”)

RS.Fields(0)

RS.Fields.Item(

“Mycolumn”)

RS.Fields.Item(0)

注意你既可以通过字段名，也可以通过顺序号来指定一个字段。例如，你可以使用RS(

“Mycolumn”)或RS(0)来代表字段Mycolumn.两种方法起到同样的效果，因为字段Mycolumn对应于表中的第一个字段（第一个字段的顺序号是0）。

当你不知道一个记录集中的字段名时，通过顺序号指定一个域是有用处的。例如，下面的ASP脚本显示了一个表中的所有记录的所有字段（见图23.1）：

<HTML>

<HEAD><TITLE>Show All Rows And Columns</TITLE></HEAD>

<BODY>

<%

Set MyConn=Sever.CerateObject(

“ADODB.Connection”)

MyConn.Open

“FILEDSN=d:\Program Files\

Common Files\ODBC\Data Source\MyData.dsn

”

Set RS=MyConn.Execute(

“SELECT * FROM Mytable”)

%>

<TABLE BORDER=1>

<TR>

<% FOR i=0 to RS.Fields.Count-1 %>

<TH><% =RS(i).Name *></TH>

<% Next %>

</TR>

<% While Not RS.EOF %>

<TR>

<% FOR i=0 TO RS.Fields.Count-1 %>

<TD><% = RS(i) %></TD>

<% Next %>

</TR>

<%

RS.MoveNext

WEND

RS.Close

MyConn.Close

%>

</TABLE>

</BODY>

</HTML>

图23.1 显示一个数据表中的所有的记录

在这个例子中，域集合的Count属性用来返回该记录集中的域的数目。Name属性用来返回每个域的名字。两个FOR

……NEXT循环用来对记录集中的所有字段进行操作。不论表中有多少记录和字段，它们将被全部显示。