c# - 我应该将常量字符串用于带参数的 SQL (.NET C#) 吗?

标签 c# sql string resharper constants

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

    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 建议我用这种方法解决它,但有人告诉我不应该这样做,因为它不是真正恒定的。添加参数时它会发生变化。我认为这种方式是正确的,因为它在运行代码的服务器上是不变的,只有在到达数据库时才会改变。

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

最佳答案

带有参数占位符的字符串应该是常量,声明为常量是对的,可变的是命令对象,但是查询字符串是常量和不可变的

关于c# - 我应该将常量字符串用于带参数的 SQL (.NET C#) 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10739991/

相关文章:

c - 如何在C中的字符串中为time_t分配内存

javascript - 仅在子字符串中优雅而稳健地替换字符

c# - 如何将数组的字符串复制到列表<string>?

c# - 如何使贝塞尔曲线的单个 anchor 连续或不连续

c# - 修饰符 public 对此项目无效

MySQL 组函数与 max() 的使用无效

python - sqlalchemy 中的多态自引用外键

c# - 如何从 iPhone 获取 pdf 到 .net C# 网站?

C#。这是一个有效的条件语句吗?

java - 在 HQL (Hibernate) 中转换 SQL 查询