SqlCommand VarChar还是Int?

时间:2016-01-23 19:15:04

标签: c# asp.net

我想知道哪个是"正确"将参数添加到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();

1 个答案:

答案 0 :(得分:4)

在CLR端的int中,SQL Server中的

Int32类型为mapped。这就是"纠正"方法是添加一个SqlDbType.Int的参数。周期。

  

但是,将字符串解析为Int比使用   .ToString()方法表现明智吗?

发送错误的参数类型值作为参数可能会产生比性能更严重的问题。看起来像"表现"在您的示例中,甚至不是一个真实的案例,因为您从未在工作中提到任何性能问题。

  

SQL服务器似乎并不关心

但作为开发人员,应该。