none
SqlParameter の parameterName について RRS feed

  • 質問

  • SqlParameter の parameterName についてなのですが、

     

    SqlConnection cn = new SqlConnection(@"XXXXX");
    cn.Open();

    SqlCommand cmd = cn.CreateCommand();
    cmd.CommandText = "SELECT * FROM TABLENAME WHERE FIELD1 = @FIELD1";
    cmd.CommandType = CommandType.Text;

    SqlParameter parameter = new SqlParameter("@FIELD1", "123");    // (A)
    //SqlParameter parameter = new SqlParameter("FIELD1", "123");     // (B)
    cmd.Parameters.Add(parameter);

    SqlDataReader rd = cmd.ExecuteReader();

    rd.Close();

     

    上記ソースの様に、SqlParameter を(A)、(B) の2パターン試してみても、

    どちらも、正常に思った通りの結果が返ってきます。

     

    これって、気を利かせて誰かが自動的に「@」を付けてくれるから、正常に動作しているんでしょうか?

     

    本来は、(A)、(B)、どちらでSqlParameterを作るのが正道なのでしょうか?

     

    ちなみに、.NET Framework が気を利かせて「@」を付加してくれてるんでしょうか?

     

    環境:

    Windows Vista Ultimate

    Visual Studio 2005 Professional Edition SP1

    .NET Framework 2.0

     
    2008年2月21日 7:08

回答

  • 確かめてみました。@を省くと自動的に@が付けられています。cmd.ExecuteReader()を実行した際に、ADO.NETにより付加されているのだと思います。
    2008年2月21日 8:54
    モデレータ

すべての返信

  • 確かめてみました。@を省くと自動的に@が付けられています。cmd.ExecuteReader()を実行した際に、ADO.NETにより付加されているのだと思います。
    2008年2月21日 8:54
    モデレータ
  • trapemiyaさん、回答ありがとうございます。

     

    自動的に「@」が付加される事から、少なくともパラメータには「@」が1つないと

    ダメって事なんですかね。

     

    ありがとうございました。

     

    2008年2月26日 23:43