Ενημέρωση Εγγραφών με το ADO

Μπορούμε να χρησιμοποιήσουμε το SQL UPDATE για να ενημερώσουμε μια καταγραφή της βάσης δεδομένων.

Ενημέρωση καταγραφής βάσης δεδομένων

Ελπίζουμε να ενημερώσουμε το αρχείο Northwind των Customers. Πρώτα πρέπει να δημιουργήσουμε ένα πίνακα, για να καταγράψουμε όλα τα αρχεία των Customers.

<html>
<body>
<%
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
  response.write("<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><%Response.Write(x.value)%></td>
  <%end if>
next
%>
</form>
<%rs.MoveNext%>
</tr>
<%
loop
conn.close
%>
</table>
</body>
</html>

Εάν ο χρήστης κάνει κλικ στο κουμπί στην στήλη "customerID", θα ανοίξει ένα νέο αρχείο "demo_update.asp". Αυτό το αρχείο περιέχει τον κώδικα δημιουργίας πεδίων εισαγωγής που βασίζεται στα πεδία των καταγραφών της βάσης δεδομένων, καθώς και ένα κουμπί "Ενημέρωση" για την αποθήκευση των αλλαγών:

<html>
<body>
<h2>Update Record</h2>
<%
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>
  <%next%>
  </tr>
  </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("Δεν υπάρχουν δικαιώματα ενημέρωσης!")
  else 
    response.write("Εγγραφή " & cid & " ενημερώθηκε!")
  end if 
end if
conn.close
%>
</body>
</html>