我想知道哪个是"正确"将参数添加到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"]);
OR
command.CommandText = "SELECT name FROM table WHERE id=@ID";
command.Parameters.Add("@ID", System.Data.SqlDbType.VarChar).Value = Request.QueryString["id"].ToString();
答案 0 :(得分:4)
int
中,SQL Server中的 Int32
类型为mapped。这就是"纠正"方法是添加一个SqlDbType.Int
的参数。周期。
但是,将字符串解析为Int比使用 .ToString()方法表现明智吗?
发送错误的参数类型值作为参数可能会产生比性能更严重的问题。看起来像"表现"在您的示例中,甚至不是一个真实的案例,因为您从未在工作中提到任何性能问题。
SQL服务器似乎并不关心
但作为开发人员,你应该。