我想知道哪种方法是向SQLCommand添加参数的"正确"方法。在我看来,最好匹配数据类型。但是,将字符串解析为 Int 是否比使用 .ToString() 方法性能明智?这是否违背了良好做法?SQL服务器似乎并不关心。ID 在表中属于 int 类型。
command.CommandText = "SELECT name FROM table WHERE id=@ID";
command.Parameters.Add("@ID", System.Data.SqlDbType.Int).Value = int.Parse(Request.QueryString["id"]);
或
command.CommandText = "SELECT name FROM table WHERE id=@ID";
command.Parameters.Add("@ID", System.Data.SqlDbType.VarChar).Value = Request.QueryString["id"].ToString();
Server 中的int
类型在 CLR 端的 Int32
中映射。这就是为什么"正确"的方法是添加一个SqlDbType.Int
的参数。时期。
但是,将字符串解析为 Int 是否比使用 .ToString() 方法性能明智?
将错误的参数类型值作为参数发送可能会产生比性能更严重的问题。看起来"性能"在您的示例中甚至不是一个真实的案例,因为您从未在工作中提到任何性能问题。
SQL服务器似乎并不关心
但作为开发人员,您应该这样做。