![](/img/trans.png)
[英]sqlParameters vs string.Format which is better for speed increase?
[英]String.Format and SqlParameters
我一直在浏览.Net中有关字符串格式的文档,但还没有发现这一点,希望有人可以指出正确的方向。 我遇到了一段使用SqlParameters并将它们放入这样的字符串中的代码:
SqlParameter[] arrParams = new SqlParameter[]
{
new SqlParameter("@ClientID", clid),
new SqlParameter("@CustomerID", cuid),
new SqlParameter("@AdminUser", false)
};
string sqlText = string.Format("Insert into [Table1] (RID, CustomerID, AdminUser) values (@ClientID,@CustomerID,@AdminUser)");
..并且在SqlCommand中的一行中运行该字符串时,正确的值将放置在正确的位置。 我习惯将大括号用于字符串格式的参数,而不是@
符号,因此想知道在哪里可以了解更多信息?
此代码实际上不需要String.Format
。
String.Format用于通常执行“字符串” +变量+“更多字符串”的时间。 这将被写为String.Format("string{0}morestring", variable);
在这种情况下,它只是一个字符串,所以这就是为什么不需要...什么都没有串联在一起的原因。
这里发生的是,@ VariableName已用您的SqlParameters填充以避免SQL注入。 简而言之,当您创建SqlParameter
,.NET库将查找与名称匹配的SQL参数(可以是存储过程,函数等),或者在SQL文本中以@开头且与名称。
我认为这里有些混乱。 @
符号用于标识INSERT INTO
语句中的命名SQL参数,而不用于String.Format
。
这与String.Format不同,实际上发生的是您正在运行SQL命令,该命令查找名为@ ClientID,@ CustomerID和@AdminUser的变量,这些变量将作为参数传递给SQL Server。 您将得到类似cmd.Parameters = arrparams的内容。
没错,SQL文本周围实际的String.Format部分是多余的,它将像您建议的那样使用花括号路由。
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.