データベース

[C#] SQL文に埋め込みパラメータを使用する

SQL文に埋め込みパラメータを使用するサンプルです。

サンプル

例)SQLServerからSELECTする

以下情報のSQLServerを対象としています。

  • サーバ名:192.168.1.1\test
  • DB名:db01
  • ユーザID:hoge
  • パスワード:pass
using System;
using System.Data.SqlClient;

// 接続情報
string connStr = @"Data Source=192.168.1.1\test;User Id=hoge;Password=pass;Initial Catalog=db01";

try
{
  // コネクションを取得する
  using (var conn = new SqlConnection(connStr))
  {
    // コネクションをオープンする
    conn.Open();
  
    // コマンドを取得する
    using (SqlCommand cmd = conn.CreateCommand())
    {
      // SQL文をセットする
      cmd.CommandText = @"SELECT * FROM test_table WHERE id = @id AND kbn = @kbn";

      // パラメータをセットする ※パターン1、パターン2どちらでもOKです
      //(パターン1)
      cmd.Parameters.Add(new SqlParameter("@id", 123));
      cmd.Parameters.Add(new SqlParameter("@kbn", "Z"));

      // (パターン2)
      //cmd.Parameters.Add("@id", SqlDbType.Int, 5).Value = 123;
      //cmd.Parameters.Add("@kbn", SqlDbType.NChar, 1).Value = "Z";

      // SQLを実行する
      SqlDataReader reader = cmd.ExecuteReader();
  
      // 実行結果を取得してコンソールに出力する
      while (reader.Read())
      {
        string col1 = reader["COL1"].ToString();  //カラム名「COL1」の値を取得する
        string col2 = reader["COL2"].ToString();  //カラム名「COL2」の値を取得する

        Console.WriteLine(col1 + "-" + col2);
      }
    }
  }

}
catch (SqlException ex)
{
  Console.WriteLine(ex);
}

21行目~28行目でパラメータを指定しています。

備考

  • SQLに埋め込み文字を使用したい場合は、SQL文の文字を埋め込みたい箇所に「@」でパラメータを指定して、
    上記のようにParameters.Addで値を指定します。
  • 上例のパターン1(23, 24行目)、パターン2(27, 28行目)のどちらで指定してもOKです。

関連記事

-データベース