Dodawanie rekordów ADO

Możemy użyć polecenia INSERT INTO SQL, aby dodać rekord do tabeli w bazie danych.

Dodawanie rekordów do tabeli w bazie danych

Chcemy dodać nowy wiersz do tabeli Customers w bazie danych Northwind. Najpierw musimy utworzyć formularz, który zawiera pola, z których zbierzemy dane:

<html>
<body>
<form method="post" action="demo_add.asp">
<table>
<tr>
<td>CustomerID:</td>
<td><input name="custid"></td>
</tr><tr>
<td>Company Name:</td>
<td><input name="compname"></td>
</tr><tr>
<td>Contact Name:</td>
<td><input name="contname"></td>
</tr><tr>
<td>Address:</td>
<td><input name="address"></td>
</tr><tr>
<td>City:</td>
<td><input name="city"></td>
</tr><tr>
<td>Postal Code:</td>
<td><input name="postcode"></td>
</tr><tr>
<td>Country:</td>
<td><input name="country"></td>
</tr>
</table>
<br /><br />
<input type="submit" value="Dodaj nowy"> 
<input type="reset" value="Anuluj">
</form>
</body>
</html>

Kiedy użytkownik naciśnie przycisk "Potwierdź", formularz zostanie wysłany do pliku o nazwie "demo_add.asp". W pliku "demo_add.asp" znajduje się kod, który dodaje nowy rekord do tabeli Customers:

<html>
<body>
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
sql="INSERT INTO customers (customerID,companyname,"
sql=sql & "contactname,address,city,postalcode,country)"
sql=sql & " VALUES "
sql=sql & "('" & Request.Form("custid") & "',"
sql=sql & "'" & Request.Form("compname") & "',"
sql=sql & "'" & Request.Form("contname") & "',"
sql=sql & "'" & Request.Form("address") & "',"
sql=sql & "'" & Request.Form("city") & "',"
sql=sql & "'" & Request.Form("postcode") & "',"
sql=sql & "'" & Request.Form("country") & "')"
w przypadku błędu kontynuuj
conn.Execute sql,recaffected
if err<>0 then
  Response.Write("Brak uprawnień do aktualizacji!")
else 
  Response.Write("<h3>" & recaffected & " rekord dodany</h3>")
end if
conn.close
%>
</body>
</html>

Ważne

Podczas korzystania z polecenia INSERT command, pamiętaj o następujących kwestiach:

  • Jeśli tabela zawiera klucz główny, upewnij się, że wartość dodawana do pola klucza głównego jest unikalna i niepusta (w przeciwnym razie provider nie doda tego rekordu, lub może wystąpić błąd)
  • Jeśli tabela zawiera pole automatycznego numerowania, nie należy uwzględniać tego pola w poleceniu INSERT (wartość tego pola jest zarządzana przez provider)

O pustych polach danych

W bazie danych MS Access, jeśli ustawisz atrybut AllowZeroLength na "Tak", możesz wprowadzać ciągi znaków o zerowej długości ("") w polach tekstowych, hiperłączy oraz polach notatek.

Komentarz:Nie wszystkie bazy danych obsługują ciągi znaków o zerowej długości, więc podczas dodawania rekordów z pustymi polami może wystąpić błąd. Dlatego bardzo ważne jest, aby sprawdzić, jakie typy danych obsługuje używana przez Ciebie baza danych.