ADO レコード追加

データベースのテーブルにレコードを追加するには、SQLのINSERT INTO命令を使用できます。

データベースのテーブルにレコードを追加する

北windデータベースのCustomersテーブルに新しいレコードを追加したいと思っています。まず、必要なデータを収集するためのフォームを作成する必要があります:

<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="新しい追加"> 
<input type="reset" value="キャンセル">
</form>
</body>
</html>

ユーザーが確認ボタンを押したとき、このフォームは "demo_add.asp" というファイルに送信されます。"demo_add.asp" ファイルには、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") & "')"
on error resume next
conn.Execute sql,recaffected
if err<>0 then
  Response.Write("更新権限がありません!")
else 
  Response.Write("<h3>" & recaffected & " レコードが追加されました</h3>")
end if
conn.close
%>
</body>
</html>

重要事項

INSERT command コマンドを使用する際には、以下の点に注意してください:

  • テーブルに主キーがある場合、主キーフィールドに追加する値が一意で空でないことを確認してください(プロバイダーがこのレコードを追加しない場合やエラーが発生する場合があります)。
  • テーブルに自動番号のフィールドがある場合、INSERT コマンドではこのフィールドを含めないでください(このフィールドの値はプロバイダーが担当します)。

無データフィールドについて

MS Access データベースでは、AllowZeroLength 属性を「はい」に設定すると、テキスト、ハイパーリンク、メモフィールドにゼロ長さの文字列("")を入力できます。

注:すべてのデータベースがゼロ長さの文字列をサポートしていないため、空白のフィールドを持つレコードを追加するとエラーが発生する可能性があります。したがって、使用しているデータベースがサポートするデータ型を確認することは非常に重要です。