使用ADO批量更新记录(源代码)
发布时间:2006-10-14 2:38:07   收集提供:gaoqian
'**************************************
    ' 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 Successfully</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>

 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50