我想知道哪些是向SQLCommand添加参数的“正确”方式。在我看来最好匹配数据类型。然而,比使用.ToString()方法性能更好地解析字符串为Int更好?这是否违背良好的做法? SQL服务器似乎不在乎。表中的id是int类型。SqlCommand VarChar或Int?
command.CommandText = "SELECT name FROM table WHERE [email protected]";
command.Parameters.Add("@ID", System.Data.SqlDbType.Int).Value = int.Parse(Request.QueryString["id"]);
OR
command.CommandText = "SELECT name FROM table WHERE [email protected]";
command.Parameters.Add("@ID", System.Data.SqlDbType.VarChar).Value = Request.QueryString["id"].ToString();
您可以使用['AddWithValue'方法](https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection.addwithvalue(v = vs.110).aspx)并跳过数据类型声明。 –
第一种方法是最好的,如果用户通过'字符串',当转换为'int'时抛出异常,但在第二种方法中,用户可以从查询字符串中传递字符串,并将其放入你的cluase select和sql返回错误中可以将字符串转换为int。第一种方法是安全而不是第二种。它的好处handel错误从您的代码没有sql –
我同意,你怎么看待tryparse?它会更好地使用它,然后varchar SqlDbType仍然? – hackingchemist