検索
連載

第3回 .NETデータ・プロバイダによるレコードの挿入/削除/更新基礎解説 ADO.NET基礎講座 ―初めての.NETデータベース・プログラミング―(1/3 ページ)

前回のレコード取得に続き、.NETデータ・プロバイダで提供されるクラスを利用したレコードの挿入、削除、更新について分かりやすく解説。

Share
Tweet
LINE
Hatena
基礎解説 ADO.NET基礎講座 ―― 初めての.NETデータベース・プログラミング ―― 
Insider.NET

 

「基礎解説 ADO.NET基礎講座 ―― 初めての.NETデータベース・プログラミング ―― 」のインデックス

連載目次

 今回は、前回で行ったデータベースからのレコードの取得に引き続き、レコードの挿入/削除/更新について、.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

publishersテーブルの全レコードを表示するサンプル・プログラム(reader.cs)
reader.csのダウンロード

 このプログラムでポイントとなるのは次の4つだ。

  1. 接続文字列をセットしたSqlConnectionオブジェクトを作成
  2. select文をセットしたSqlCommandオブジェクトを作成
  3. ExecuteReaderメソッドによりselect文を実行し、SqlDataReaderオブジェクトを取得
  4. Readメソッドによりレコードを1行ずつ取得

 今回作成するいくつかのサンプル・プログラムは、このプログラムをベースとしているので、その構造をよく理解しておいていただきたい。またこのプログラムは、今回の各サンプル・プログラムの実行結果を確認するためにも使っていただきたい。

insert文によるレコードの挿入

 では次に、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テーブルの構造
Visual Studio .NETでは、サーバ・エクスプローラのツリーを展開していき、対象となるテーブルを右クリックして[テーブルのデザイン]を選択すれば表示される。

 この画面から分かるように、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.

       | 次のページへ
ページトップに戻る