ADO Records toevoegen


We kunnen de SQL-opdracht INSERT INTO gebruiken om een ​​record toe te voegen aan een tabel in een database. 


Een record toevoegen aan een tabel in een database

We willen een nieuw record toevoegen aan de tabel Klanten in de Northwind-database. We maken eerst een formulier dat de velden bevat waarvan we gegevens willen verzamelen:

<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="Add New">
<input type="reset" value="Cancel">
</form>

</body>
</html>


Wanneer de gebruiker op de verzendknop drukt, wordt het formulier verzonden naar een bestand met de naam "demo_add.asp". Het bestand "demo_add.asp" bevat de code die een nieuw record aan de tabel Klanten zal toevoegen:

<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") & "')"

on error resume next
conn.Execute sql,recaffected
if err<>0 then
  Response.Write("No update permissions!")
else
  Response.Write("<h3>" & recaffected & " record added</h3>")
end if
conn.close
%>

</body>
</html>

Belangrijk

Houd rekening met het volgende als u de opdracht SQL INSERT gebruikt:

  • Als de tabel een primaire sleutel bevat, zorg er dan voor dat u een unieke, niet-null-waarde toevoegt aan het veld voor de primaire sleutel (zo niet, dan voegt de provider de record mogelijk niet toe, of er treedt een fout op)
  • Als de tabel een AutoNummering-veld bevat, neem dit veld dan niet op in de SQL INSERT-opdracht (de waarde van dit veld wordt automatisch door de provider afgehandeld)

Hoe zit het met velden zonder gegevens?

In een MS Access-database kunt u tekenreeksen met een lengte van nul ("") invoeren in de velden Tekst, Hyperlink en Memo ALS u de eigenschap AllowZeroLength instelt op Ja.

Opmerking: niet alle databases ondersteunen tekenreeksen met een lengte van nul en kunnen een fout veroorzaken wanneer een record met lege velden wordt toegevoegd. Het is belangrijk om te controleren welke gegevenstypen uw database ondersteunt.