ADO如何善用RECORDSET组件呢
类别: ASP教程
?榱松朴靡ecordSet物件,RecordSet物件??有杂多有用的?傩院头椒ǎ???我??再?W?W:
Filter?傩裕红兑eecordSet韵定搜?み^?V的?l件,只锢示合乎?l件的儋料。
Clone方法:妖氧一份RecordSet。
CacheSize?傩裕涸O定或得知RecordSet?捍妫ㄣache)於????篦的的????剐?怠<br> Filter?傩约br>
??由SELECT等指令?⒉樵?存放到RecordSet的????,仍然可以於RecordSet中再韵定搜?み^?V的?l件,方法?槭褂闷ilter?傩浴<br>
Filter?傩裕?於ReecordSet韵定搜?さ倪^?V?l件,只锢示合乎?l件的儋料。
??我??看一??於ASP程式瘁??中使用Filter?傩缘睦?子。
譬如ASP程式瘁rs19.asp如下,Filter韵定?轵s2.Filter = "出版=\'松??\'",表示只要搜?? [出版] ?谖??? [松??] 的????:
<%
Set conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Set rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = "SELECT * From 著作"
rs2.Open SqlStr,conn1,1,1
rs2.Filter = "出版=\'松??\'"
%>
<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0>
<TR>
<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">??名</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">出版</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">?D片</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">??介</FONT></TD>
<% Do while not rs2.EOF %>
<TR>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("??名") %></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("出版") %></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("?D片") %></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("??介") %></TD>
</TR>
<% rs2.MoveNext %>
<% Loop %>
</TABLE>
<% rs2.Close %>
以上的 ASP程式瘁rs19.asp,於用?舳耸褂??g盂器,?g盂?绦械慕Y果,锢示咿?V後的劫果,只锢示合乎?l件的儋料。
CacheSize?傩约br>
CacheSize?傩裕?韵定或得知RecordSet?捍妫ㄣache)於????篦的的????剐?担?盍韵值?楸。
譬如您若?⒚acheSize韵定?楸0?r,ADO首先?⑶氨0剐的?????捍妫ㄣache)放到本?C????篦??蓄器(local memory buffer)??中,一旦您移?拥阶钅┑牡诒0剐?????r,ADO?捍妫ㄣache)第二??10剐????。
若要更新?捍妫ㄣache)的????,可使用Resync方法。
??我??看一??於ASP程式瘁??中使用CacheSize的例子。
譬如ASP程式瘁rs18.asp如下,呃??例子???a品儋料表的儋料由第一剐逐一移?拥阶钅┕P,????循?h做了100次,??算??共花了多少?r殓,比蒉有和?]有韵定CacheSize的?绦行?能差?e:
<%
Set conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Set rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = "SELECT * From ?a品"
rs2.Open SqlStr,conn1,1,1
t1 = Timer
For i = 1 to 100
rs2.MoveFirst
Do while not rs2.EOF
A = rs2(0)
rs2.MoveNext
Loop
Next
t2 = Timer
Response.Write "<BR>?o韵CacheSize: " & CINT(t2 - t1)
rs2.MoveFirst
rs2.CacheSize = 10
t2 = Timer
For i = 1 to 100
rs2.MoveFirst
Do while not rs2.EOF
A = rs2(0)
rs2.MoveNext
Loop
Next
t2 = Timer
Response.Write "<BR>有韵CacheSize: " & CINT(t2 - t1)
%>
<% rs2.Close %>
由本例,未韵定CacheSize,花了6秒?r殓就完成。?⒚acheSize韵定?楸0?r,反而花了9秒?r殓才完成。可??CacheSize??小心使用,否?t?⒂绊??绦械男?能。
Clone方法
Clone方法,妖氧一份RecordSet。
有?r候想??理一下RecordSet,譬如使用如上的Filter?傩裕?於ReecordSet韵定搜?さ倪^?V?l件,RecordSet就被??更,此?r若又想保留原RecordSet?r,就可以使用Clone方法,先妖氧一份RecordSet,再??理妖氧的那一份。
??我??看一??於ASP程式瘁??中使用Clone的例子。
譬如ASP程式瘁rs12.asp如下,使用Set rs1 = rs.Clone?Ⅱs 的RecordSet妖氧一份到rs1的RecordSet??中:
<%
Set conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Set rs = Server.CreateObject("ADODB.Recordset")
SqlStr = "SELECT * FROM 著作"
rs.Open SqlStr,conn1,1,1
Set rs1 = rs.Clone
%>
<Center>
<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0>
<TR>
<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">??名</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">出版</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">?D片</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">??介</FONT></TD>
</TR>
<%
Do While Not rs1.EOF
%>
<TR>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs1("??名")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs1("出版")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs1("?D片")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs1("??介")%></TD>
</TR>
<% rs1.MoveNext
Loop
rs1.Close %>
</TABLE>
以上的 ASP程式瘁rs12.asp,於用?舳耸褂??g盂器,?g盂?绦械慕Y果,锢示??咿妖氧的那一份rs1的RecordSet。
DSN data source
??我??想得知DSN data source的????儋???r,可以直接?⑦B??锢示出?怼<br>
??我??看一??於ASP程式瘁??中得知DSN data source????儋??的例子。
譬如ASP程式瘁rs11.asp如下:
<%
Set conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Response.Write(conn1)
%>
以上的 ASP程式瘁rs11.asp,於用?舳耸褂??g盂器,?g盂?绦械慕Y果,使用Response.Write(conn1),即可锢示DSN data source的????儋??。
OpenSchema
OpenSchema方法,可得知SQL Server某一??儋料?斓馁Y料表儋??。
??我??看一??於ASP程式瘁??中使用OpenSchema的例子,??先安砚本??所附「咀站?衢T??用精啉」光碟片,以便自?屿队QL Server建立comPak儋料?臁<br>
譬如ASP程式瘁rs30.asp如下:
<%
Set conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "driver={SQL Server};server=(Local);uid=sa;pwd=;database=comPak"
set rs = conn1.OpenSchema(20) \'adSchemaTables
Do while not rs.EOF
Response.Write "<BR>" & rs("TABLE_NAME") & ": " & rs("TABLE_TYPE")
rs.MoveNext
Loop
%>
以上的 ASP程式瘁rs30.asp,於用?舳耸褂??g盂器,?g盂?绦械慕Y果,由set rs = conn1.OpenSchema(20) 取得SQL Server 的comPak儋料?斓馁Y料表儋??,其中rs("TABLE_NAME")取得儋料表名费,rs("TABLE_TYPE")取得儋料表??型。
Filter?傩裕红兑eecordSet韵定搜?み^?V的?l件,只锢示合乎?l件的儋料。
Clone方法:妖氧一份RecordSet。
CacheSize?傩裕涸O定或得知RecordSet?捍妫ㄣache)於????篦的的????剐?怠<br> Filter?傩约br>
??由SELECT等指令?⒉樵?存放到RecordSet的????,仍然可以於RecordSet中再韵定搜?み^?V的?l件,方法?槭褂闷ilter?傩浴<br>
Filter?傩裕?於ReecordSet韵定搜?さ倪^?V?l件,只锢示合乎?l件的儋料。
??我??看一??於ASP程式瘁??中使用Filter?傩缘睦?子。
譬如ASP程式瘁rs19.asp如下,Filter韵定?轵s2.Filter = "出版=\'松??\'",表示只要搜?? [出版] ?谖??? [松??] 的????:
<%
Set conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Set rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = "SELECT * From 著作"
rs2.Open SqlStr,conn1,1,1
rs2.Filter = "出版=\'松??\'"
%>
<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0>
<TR>
<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">??名</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">出版</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">?D片</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">??介</FONT></TD>
<% Do while not rs2.EOF %>
<TR>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("??名") %></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("出版") %></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("?D片") %></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("??介") %></TD>
</TR>
<% rs2.MoveNext %>
<% Loop %>
</TABLE>
<% rs2.Close %>
以上的 ASP程式瘁rs19.asp,於用?舳耸褂??g盂器,?g盂?绦械慕Y果,锢示咿?V後的劫果,只锢示合乎?l件的儋料。
CacheSize?傩约br>
CacheSize?傩裕?韵定或得知RecordSet?捍妫ㄣache)於????篦的的????剐?担?盍韵值?楸。
譬如您若?⒚acheSize韵定?楸0?r,ADO首先?⑶氨0剐的?????捍妫ㄣache)放到本?C????篦??蓄器(local memory buffer)??中,一旦您移?拥阶钅┑牡诒0剐?????r,ADO?捍妫ㄣache)第二??10剐????。
若要更新?捍妫ㄣache)的????,可使用Resync方法。
??我??看一??於ASP程式瘁??中使用CacheSize的例子。
譬如ASP程式瘁rs18.asp如下,呃??例子???a品儋料表的儋料由第一剐逐一移?拥阶钅┕P,????循?h做了100次,??算??共花了多少?r殓,比蒉有和?]有韵定CacheSize的?绦行?能差?e:
<%
Set conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Set rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = "SELECT * From ?a品"
rs2.Open SqlStr,conn1,1,1
t1 = Timer
For i = 1 to 100
rs2.MoveFirst
Do while not rs2.EOF
A = rs2(0)
rs2.MoveNext
Loop
Next
t2 = Timer
Response.Write "<BR>?o韵CacheSize: " & CINT(t2 - t1)
rs2.MoveFirst
rs2.CacheSize = 10
t2 = Timer
For i = 1 to 100
rs2.MoveFirst
Do while not rs2.EOF
A = rs2(0)
rs2.MoveNext
Loop
Next
t2 = Timer
Response.Write "<BR>有韵CacheSize: " & CINT(t2 - t1)
%>
<% rs2.Close %>
由本例,未韵定CacheSize,花了6秒?r殓就完成。?⒚acheSize韵定?楸0?r,反而花了9秒?r殓才完成。可??CacheSize??小心使用,否?t?⒂绊??绦械男?能。
Clone方法
Clone方法,妖氧一份RecordSet。
有?r候想??理一下RecordSet,譬如使用如上的Filter?傩裕?於ReecordSet韵定搜?さ倪^?V?l件,RecordSet就被??更,此?r若又想保留原RecordSet?r,就可以使用Clone方法,先妖氧一份RecordSet,再??理妖氧的那一份。
??我??看一??於ASP程式瘁??中使用Clone的例子。
譬如ASP程式瘁rs12.asp如下,使用Set rs1 = rs.Clone?Ⅱs 的RecordSet妖氧一份到rs1的RecordSet??中:
<%
Set conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Set rs = Server.CreateObject("ADODB.Recordset")
SqlStr = "SELECT * FROM 著作"
rs.Open SqlStr,conn1,1,1
Set rs1 = rs.Clone
%>
<Center>
<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0>
<TR>
<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">??名</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">出版</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">?D片</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">??介</FONT></TD>
</TR>
<%
Do While Not rs1.EOF
%>
<TR>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs1("??名")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs1("出版")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs1("?D片")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs1("??介")%></TD>
</TR>
<% rs1.MoveNext
Loop
rs1.Close %>
</TABLE>
以上的 ASP程式瘁rs12.asp,於用?舳耸褂??g盂器,?g盂?绦械慕Y果,锢示??咿妖氧的那一份rs1的RecordSet。
DSN data source
??我??想得知DSN data source的????儋???r,可以直接?⑦B??锢示出?怼<br>
??我??看一??於ASP程式瘁??中得知DSN data source????儋??的例子。
譬如ASP程式瘁rs11.asp如下:
<%
Set conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Response.Write(conn1)
%>
以上的 ASP程式瘁rs11.asp,於用?舳耸褂??g盂器,?g盂?绦械慕Y果,使用Response.Write(conn1),即可锢示DSN data source的????儋??。
OpenSchema
OpenSchema方法,可得知SQL Server某一??儋料?斓馁Y料表儋??。
??我??看一??於ASP程式瘁??中使用OpenSchema的例子,??先安砚本??所附「咀站?衢T??用精啉」光碟片,以便自?屿队QL Server建立comPak儋料?臁<br>
譬如ASP程式瘁rs30.asp如下:
<%
Set conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "driver={SQL Server};server=(Local);uid=sa;pwd=;database=comPak"
set rs = conn1.OpenSchema(20) \'adSchemaTables
Do while not rs.EOF
Response.Write "<BR>" & rs("TABLE_NAME") & ": " & rs("TABLE_TYPE")
rs.MoveNext
Loop
%>
以上的 ASP程式瘁rs30.asp,於用?舳耸褂??g盂器,?g盂?绦械慕Y果,由set rs = conn1.OpenSchema(20) 取得SQL Server 的comPak儋料?斓馁Y料表儋??,其中rs("TABLE_NAME")取得儋料表名费,rs("TABLE_TYPE")取得儋料表??型。
- 上一篇: ADO如何提供异动功能(BIG5)
- 下一篇: ADO如何新增修改?除数据库的资料呢
-= 资 源 教 程 =-
文 章 搜 索