我应该使用带有参数的SQL的const字符串(.NET C#)吗?

时间:2012-05-24 14:55:16

标签: c# sql string resharper const

我想知道在使用这样的代码时是否应该使用const字符串:

    public DataTable GetSomeData(int id)
    {
        var con = new SqlConnection(ConnString);
        const string sql = "SELECT * FROM [data] WHERE [id]=@id";
        var cmd = new SqlCommand(sql, con);
        cmd.Parameters.AddWithValue("@id", id);

        var dt = new DataTable();
        con.Open();
        SqlDataReader dr = cmd.ExecuteReader();
        dt.Load(dr);
        con.Close();

        return dt;
    }

ReSharper建议我这样解决它,但我告诉我不应该因为它不是真的不变。添加参数时会发生变化。我认为这种方式是正确的,因为它在运行代码的服务器上是常量,只有在到达数据库时才会发生变化。

那么,最好的方法是什么?

1 个答案:

答案 0 :(得分:6)

带参数占位符的字符串应该是常量,将它声明为常量是正确的,它是可变的命令对象,但查询字符串是常量且不可变的。 / p>