接続の種類 | クラス名 |
---|---|
System.Data.SqlClient | SqlCommandクラス |
System.Data.OracleClient | OracleCommandクラス |
System.Data.OleDb | OleDbCommandクラス |
System.Data.Odbc | OdbcCommandクラス |
SqlCommandクラスは、SQL文などを使ってデータベースに問い合わせをするためのクラスです。SqlConnectionオブジェクトとつなげて利用します。
プロパティ名 | 概要 |
---|---|
CommandText | データベースに対して実行するSQLステートメントまたは、ストアドプロシージャを取得・設定する |
Connection | データベースに問い合わせる際に利用するSqlConnectionオブジェクトを取得・設定する |
Transaction | SQL分などを実行するためのトランザクションを行うオブジェクトを取得・設定する |
メソッド名 | 概要 |
---|---|
ExecuteNonQuery | 接続したデータベースに対してINSERT、UPDATE、DELETE文などを実行し、影響を受けた行数を返す |
ExecuteReader | 接続したデータベースに対してSELECT文を実行し、その結果をSqlDataReaderオブジェクトとして返す |
データベースに対して問い合わせをするにはこのクラスのオブジェクトを使用します。インスタンス生成時にConnectionオブジェクトと、実行するSQL文を指定します。
○ プロジェクト
プロジェクトを作成して確認してみましょう。まずは、INSERT文を実行してみましょう。
プロジェクトの種類 | コンソール アプリケーション |
---|---|
プロジェクト名 | CommandTest |
○ プログラム
Mainメソッドに次のように記述してください。
Program.cs
○ 実行結果
登録するユーザー情報を入力してください。
ID:4
ユーザー名:tanaka
パスワード:tpass
氏名:田中
実行するSQL文:INSERT INTO Users VALUES(4, 'tanaka', 'tpass', '田中')
変更のあった件数:1
○ 解説
今回はUsersテーブルにデータを追加するプログラムです。21~29行目では、追加するデータを入力しています。入力したデータをもとに32行目でSQL文を作成しています。今回はレコードを追加するのでINSERT文を作成します。このようにC#プログラムの中でSQL文は文字列として扱います。
35行目でSqlCommandオブジェクトを生成しています。インスタンス生成時にSQL文とSqlConnectionオブジェクトを渡すと、それぞれをプロパティにセットした状態でオブジェクトを生成します。38行目ではセットしたSQL文を、CommandTextプロパティを参照して表示しています。
44行目では、SQL文を実行しています。この命令文の前まででデータベースを接続しておく必要があります。前の行(41行目)でSqlConnectionオブジェクトのOpenメソッドを呼び出して接続してあります。ExcecuteNonQueryメソッドは影響のあった行数を返すので、それをret変数に格納し、47行目で表示しています。一連の処理が終わったら50行目にもあるようにSqlConnectionオブジェクトのCloseメソッドを使ってデータベースへの接続を閉じます。
○ データベースの確認
INSERT文を実行したのでUsersテーブルにデータが追加されているはずです。Visual Studioのサーバー エクスプローラーより確認してみましょう。次の図のように「データ接続」―「Books.mdf」―「テーブル」と展開してテーブルの一覧を表示させ、Usersを右クリックして表示されるメニューの「テーブルデータの表示(S)」をクリックします。
すると次の図のようにデータの一覧が表示されます。先ほど入力したデータが登録されていることを確認できます。