使用ADO批量更新记录(源代码)

发表于:2007-06-30来源:作者:点击数: 标签:
@#************************************** @# Name: Batch Update using ADO @# Description:ADO has a great batch upda @#te feature that not many people take adv @# ant age of. You can use it to update many @#records at once without making mul
@#**************************************
    @# Name: Batch Update using ADO
    @# Description:ADO has a great batch upda
    @#     te feature that not many people take adv
    @#     antage of. You can use it to update many
    @#     records at once without making multiple
    @#     round trips to the database. Here is how
    @#     to use it.
    @# By: Found on the World Wide Web
    @#
    @#
    @# Inputs:None
    @#
    @# Returns:None
    @#
    @#Assumes:None
    @#
    @#Side Effects:None
    @#
    @#Warranty:
    @#code provided by Planet Source Code(tm)
    @#     (http://www.Planet-Source-Code.com) @#as
    @#     is@#, without warranties as to performanc
    @#     e, fitness, merchantability,and any othe
    @#     r warranty (whether expressed or implied
    @#     ).
    @#**************************************
    
    <HTML>
    <HEAD><TITLE>Place Document Title Here</TITLE></HEAD>
    <BODY BGColor=ffffff Text=000000>
    <%
    Set cn = Server.CreateObject("ADODB.Connection")
    Set rs = Server.CreateObject("ADODB.RecordSet")
    cn.Open Application("guestDSN")
    rs.ActiveConnection = cn
    rs.CursorType = adOpenStatic
    rs.LockType = adLockBatchOptimistic
    rs.Source = "SELECT * FROM authors"
    rs.Open
    If (rs("au_fname") = "Paul") or (rs("au_fname") = "Johnson") Then
    newval = "Melissa"
    Else
    newval = "Paul"
    End If
    If err <> 0 Then
    %>
    <B>Error opening RecordSet</B>
    <% Else %>
    <B>Opened Suclearcase/" target="_blank" >ccessfully</B><P>
    <% End If %>
    <H2>Before Batch Update</H2>
    <TABLE BORDER=1>
    <TR>
    <% For i = 0 To rs.Fields.Count - 1 %>
    <TD><B><%= rs(i).Name %></B></TD>
    <% Next %>
    </TR>
    <% For j = 1 To 5 %>
    <TR>
    <% For i = 0 To rs.Fields.Count - 1 %>
    <TD><%= rs(i) %></TD>
    <% Next %>
    </TR>
    <%
    rs.MoveNext
    Next
    rs.MoveFirst
    %>
    </TABLE>
    Move randomly In the table and perform updates To table.<BR>
    <%
    Randomize
    r1 = Int(rnd*3) + 1 @# n Itterations
    r2 = Int(rnd*2) + 1 @# n places skipped between updates
    For i = 1 To r1
    response.write "Itteration: " & i & "<BR>"
    rs("au_fname") = newval
    For j = 1 To r2
    rs.MoveNext
    response.write "Move Next<BR>"
    Next
    Next
    rs.UpdateBatch adAffectAll
    rs.Requery
    rs.MoveFirst
    %>
    <% rs.MoveFirst %>
    <H2>After Changes</H2>
    <TABLE BORDER=1>
    <TR>
    <% For i = 0 To rs.Fields.Count - 1 %>
    <TD><B><%= rs(i).Name %></B></TD>
    <% Next %>
    </TR>
    <% For j = 1 To 5 %>
    <TR>
    <% For i = 0 To rs.Fields.Count - 1 %>
    <TD><%= rs(i) %></TD>
    <% Next %>
    </TR>
    <%
    rs.MoveNext
    Next
    rs.Close
    Cn.Close
    %>
    </TABLE>

原文转自:http://www.ltesting.net