前回のレコード取得に続き、.NETデータ・プロバイダで提供されるクラスを利用したレコードの挿入、削除、更新について分かりやすく解説。
今回は、前回で行ったデータベースからのレコードの取得に引き続き、レコードの挿入/削除/更新について、.NETデータ・プロバイダを利用したプログラミングを解説していく。なお、.NETデータ・プロバイダとは何かについては、前回の冒頭で解説している。
まずは前回の後半で示したデータベースからレコードを取得する手順をもう一度復習しておこう。次のサンプル・プログラム(再掲)は、MSDEのサンプル・データベースに含まれているpubsデータベース内のpublishersテーブルから、select文によりpub_idカラムとpub_nameカラムについてすべての行を取得し、画面に表示する。
// reader.cs
using System;
using System.Data.SqlClient;
class Reader {
public static void Main() {
string connStr = "Server=(local)\\NetSDK;"
+ "Trusted_Connection=yes;"
+ "database=pubs";
string sqlStr = "SELECT pub_id, pub_name FROM publishers";
SqlConnection conn = new SqlConnection(connStr);
SqlCommand cmd = new SqlCommand(sqlStr, conn);
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read()) {
Console.Write("{0},{1}\n", dr["pub_id"], dr["pub_name"]);
}
dr.Close();
conn.Close();
}
}
// コンパイル方法:csc reader.cs
このプログラムでポイントとなるのは次の4つだ。
今回作成するいくつかのサンプル・プログラムは、このプログラムをベースとしているので、その構造をよく理解しておいていただきたい。またこのプログラムは、今回の各サンプル・プログラムの実行結果を確認するためにも使っていただきたい。
では次に、publishersテーブルにレコードを挿入(追加)する手順について見ていこう。
SQLによるレコードの追加はinsert文を使用する。insert文の基本的な構文は次のようなものだ。
insert into テーブル名 (カラム名, ……) values (値, ……)
カラム部分で指定したカラム名の並びと、値部分で指定した実際のデータの並びはそれぞれが対になっていなければならい。publishersテーブルにレコードを1件追加するinsert文は、実際には次のようなものになる。
insert into publishers (pub_id, pub_name)
values ("9990", "@IT Insider.NET")
このinsert文を実行することにより、pub_idカラムの値が「9990」で、pub_nameカラムの値が「@IT Insider.NET」となるレコードが、publishersテーブルに追加される。
すべてのカラムに対して値を指定してレコードの挿入を行う場合には、次のように各カラム名の指定部分を省略することもできる。
insert into publishers
values('9991', 'UCB出版', 'Berkeley', 'CA', 'USA')
本連載の第1回目ではpublishersテーブルの構造について解説したが、いま一度確認しておこう。Visual Studio .NETを使用している場合には、サーバ・エクスプローラからpubsデータベースのツリーを展開し、publishersテーブル部分をマウスで右クリックして[テーブルのデザイン]を選択すればよい。
この画面から分かるように、publishersテーブルには5つのカラムがあり、pub_idカラム以外のカラムは[Nullを許容]にチェックが入っている。Nullを許容するということはそのカラムに値の入っていないレコードを作成できるということだ。また、pub_idカラムには小さな鍵マークが付いていることからも分かるように、テーブル内でレコードを一意に識別するための主キー(プライマリ・キー)となっている。そのためこのカラムのデータは省略することができないし、ほかのレコードと同じ値をこのカラムに持つレコードを作成することもできない。
なお、このpublishersテーブルに関しては1つ注意する点がある。それはpub_idカラムに設定されている「制約」である。カラムに設定された制約を確認するには、上記のテーブルのデザイン画面上をマウスで右クリックして[プロパティ]を選択し、開く「プロパティ・ページ」で[制約のチェック]タブを見る。
[制約式]に次のような条件式が記述されているのが分かるだろう。
([pub_id] = '1756' or ([pub_id] = '1622' or ([pub_id] = '0877' or ([pub_id] = '0736' or [pub_id] = '1389'))) or [pub_id] like '99[0-9][0-9]')
この条件に当てはまらないような値をpub_idカラムに持つレコードは作成できない。なお、最後の“[pub_id] like '99[0-9][0-9]'”は、pub_idが9900〜9999の値でなければならないという条件を示している。
Copyright© Digital Advantage Corp. All Rights Reserved.