System.Data.SqlClient名前空間: 「SqlCommand」
System.Data.OracleClient名前空間:「OracleCommand」
System.Data.OleDb名前空間: 「OleDbCommand」
SqlCommandクラスは、データベースにおいて、命令を実行させるためのオブジェクトです。このオブジェクトを使って、データベースからデータを抽出したり、書き込んだりします。
■ CommandTextプロパティ
データソースで実行するTransact-SQLステートメントまたは、ストアドプロシージャを取得または設定します。
■ Connectionプロパティ
このオブジェクトで使用するSqlConnectionオブジェクトを取得または設定します。
■ Transactionプロパティ
SqlCommandを実行するSqlTransactionオブジェクトを取得または設定します。
■ ExecuteNonQueryメソッド
接続したデータベースに対してTransact-SQLステートメントを実行し、影響を受けた行数を返します。
■ ExcuteReaderメソッド
CommandTextをConnectionに送信し、結果セットであるSqlDataReaderオブジェクトを生成します。
図2-1にもあるように、このCommandオブジェクトはConnectionオブジェクトを利用します。CommandクラスはSQLステートメントなど命令をあらわすオブジェクトになります。実行する際にもConnectionオブジェクトを通して実行し、その結果、影響を与えた行数を返したり、データを抽出するオブジェクトを作成したりします。
コマンドを実行する際にはExecute~メソッドを使います。その際には、コネクションオブジェクトを使って、データベースと接続しておく必要があります。
○ プロジェクト
プロジェクトを作成して確認してみましょう。まずは、INSERT文を実行してみましょう。
プロジェクトの種類 | Windows フォーム アプリケーション |
---|---|
プロジェクト名 | CommandTest1 |
○ フォームデザイン
次の図のようにコントロールを配置してください。
○ プログラム
「接続」ボタンをクリックしたときのイベントプロシージャの記述をしてください。
Form1.vb
○ 実行結果
今回のサンプルはコードで接続オブジェクトと、コマンドオブジェクトを作って利用しました。プログラムの内容は、先回のサンプルのデータベースに接続する記述に加えて、コマンドオブジェクトを生成して、データベースに接続してから実行しました。実行した結果、何行の影響が出たのかも表示されています。データベース本体もデータが更新されているかどうかを確認してみましょう。
データベースに対して何か処理をしたい場合は、ConnectionオブジェクトのOpen()メソッドを使って接続し、処理を行います。そして、終了したら、ConnectionオブジェクトのClose()メソッドを使って、切断します。
では、このサンプルと同じものを今度はデザイナを使って作成してみましょう。
※ 補足1を参考にして、「SqlCommand」コントロールを表示させてください。
○ プロジェクト
プロジェクトの種類 | Windows フォーム アプリケーション |
---|---|
プロジェクト名 | CommandTest2 |
○ フォームデザイン
「CommandTest」プロジェクトと同じようにコントロールを配置してください。今回は、デザイン画面でCommandオブジェクトを作成します。Connectionコントロールと、Commandコントロールを配置してください。
コンポーネントトレイに配置されるので、次のようにプロパティを設定しましょう。
コントロール | プロパティ名 | 値 |
---|---|---|
SqlConnection1 | ConnectionString | Data Source=.¥;AttachDbFilename="C:¥Work¥Books.mdf";Integrated Security=True;Connect Timeout=30;User Instance=True |
SqlCommand1 | Connection | 既存 ― SqlConnection1 |
CommandオブジェクトにSQLステートメントを関連付けます。CommandTextプロパティを編集します。次の図で示されているボタンをクリックしてください。
次の図のようなウィンドウでSQLステートメントを生成できます。「M_ユーザー」を選択して「追加」をクリックしてください。そして「閉じる」ボタンで閉じます。
今回は、更新用のSQLステートメントを生成します。次の図のように右クリックして出てくるメニューの中から「クエリ の種類の変更」―「更新」をクリックしてください。
すると次の図のようにステートメントが変わります。
次に、次の図の順序で変更する列名を選択し、変更する値を入力してください。
あとは、変更したい列の条件を指定しますので、次の図のように条件を追加します。そして「OK」ボタンをクリックします。
○ プログラム
「接続」ボタンをクリックしたときのイベントプロシージャの記述をしてください。
Form1.vb
○ 実行結果
今回は、デザイナでCommandオブジェクトを作成し、設定しました。クエリビルダを使うことにより、SQL文を詳しく知らなくても生成することができます。次に、「接続」ボタンをクリックしたときの処理を記述しますが、ここでは先ほどの例と違って、すでにオブジェクトはできあがっていますので、すぐに利用する記述をするだけです。