به روزرسانی (ADO Update)
در این بخش «به روزرسانی رکورد ADO» را می بینیم. «UPDATE» یعنی تغییر سطر موجود. «رکورد (Record)» یک سطر از جدول است. مثل اصلاح شماره تماس دانش آموز در دفتر مدرسه.
فهرست رکوردها و دکمه ویرایش
اول همه رکوردها را نشان می دهیم. سپس برای هر سطر، یک دکمه ویرایش می گذاریم. دکمه شناسه را ارسال می کند.
<html>
<body>
<%
Dim conn
Dim rs
Dim x
Set conn = Server.CreateObject("ADODB.Connection")
conn.Provider = "Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM customers", conn
%>
<h2>List Database</h2>
<table border="1" width="100%">
<tr>
<% For Each x In rs.Fields %>
<th><% = UCase(x.Name) %></th>
<% Next %>
</tr>
<% Do Until rs.EOF %>
<tr>
<form method="post" action="demo_update.asp">
<% For Each x In rs.Fields %>
<% If LCase(x.Name) = "customerid" Then %>
<td>
<input type="submit" name="customerID" value="<% = x.Value %>" />
</td>
<% Else %>
<td><% = x.Value %></td>
<% End If %>
<% Next %>
</form>
<% rs.MoveNext %>
</tr>
<% Loop %>
<%
conn.Close
%>
</table>
</body>
</html>
فرم ویرایش یک رکورد و اجرای UPDATE
حالا با شناسه انتخاب شده وارد صفحه ویرایش می شویم. اگر فرم خالی باشد، ورودی ها با مقدار فعلی پر می شوند. سپس با ارسال فرم، UPDATE اجرا می شود.
<html>
<body>
<h2>Update Record</h2>
<%
Dim conn
Dim rs
Dim cid
Dim sql
Set conn = Server.CreateObject("ADODB.Connection")
conn.Provider = "Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
cid = Request.Form("customerID")
If Request.Form("companyname") = "" Then
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM customers WHERE customerID='" & cid & "'", conn
%>
<form method="post" action="demo_update.asp">
<table>
<% For Each x In rs.Fields %>
<tr>
<td><% = x.Name %></td>
<td><input name="<% = x.Name %>" value="<% = x.Value %>" /></td>
</tr>
<% Next %>
</table>
<br /><br />
<input type="submit" value="Update record" />
</form>
<%
Else
sql = "UPDATE customers SET "
sql = sql & "companyname='" & Request.Form("companyname") & "', "
sql = sql & "contactname='" & Request.Form("contactname") & "', "
sql = sql & "address='" & Request.Form("address") & "', "
sql = sql & "city='" & Request.Form("city") & "', "
sql = sql & "postalcode='" & Request.Form("postalcode") & "', "
sql = sql & "country='" & Request.Form("country") & "' "
sql = sql & "WHERE customerID='" & cid & "'"
On Error Resume Next
conn.Execute sql
If Err <> 0 Then
Response.Write "No update permissions!"
Else
Response.Write "Record " & cid & " was updated!"
End If
End If
conn.Close
%>
</body>
</html>
گام های عملی سریع
- اتصال ADO بساز و رکوردها را بگیر.
- برای هر سطر، دکمه ویرایش بگذار.
- فرم ویرایش را با مقدار فعلی پر کن.
- UPDATE را با شناسه اجرا کن.
- خطا را بررسی کن و اتصال را ببند.
نکته: «WHERE» شرط رکورد هدف است. بدون آن، همه تغییر می کنند.
هشدار: از اتصال رشته ای خام پرهیز کن. ورودی ها را پاک سازی کن تا تزریق SQL رخ ندهد.
برای مرور، صفحه افزودن ADO و همچنین حذف ADO را ببین.
جمع بندی سریع
- UPDATE یعنی ویرایش یک رکورد.
- WHERE تعیین کننده رکورد هدف است.
- فرم، داده جدید را می فرستد.
- خطا را همیشه بررسی کن.
- اتصال ها را ببند.