2012-06-15 23 views
0

我一直在浏览.Net中的字符串格式的文档,还没有找到这个位,并希望有人能指出我在正确的方向。我遇到的代码需要SqlParameters,并把他们在这样的串一个工作片:String.Format和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线的时候适当的值被放入正确的斑点。我习惯使用大括号来表示字符串格式参数,而不是@符号,所以想知道在哪里了解更多关于这个的信息?

+0

“@”表示一个SQL变量 – dtsg

回答

1

此代码实际上并不需要String.Format

String.Format适用于通常要执行“字符串”+变量+“更多字符串”的时间。这将被写为String.Format("string{0}morestring", variable);在这种情况下,它只是一个字符串,所以这就是为什么没有必要......没有任何东西被串联在一起。

Here is a good explanation of String.Format

这到底是怎么发生的是,@VariableName被充满了你SqlParameters避免SQL注入。简而言之,当您创建一个SqlParameter时,.NET库会查找与名称匹配的SQL参数(可能是存储过程,函数等),或者是以@开头的SQL文本中的任何项目,并匹配名称。

And here is a good explanation of how SqlParameters work

0

我认为这里存在一些混乱。 @符号用于标识INSERT INTO语句中的指定SQL参数,而不是String.Format

0

这与String.Format并不相似实际发生的是您正在运行SQL命令,该命令查找名为@ ClientID,@ CustomerID和@AdminUser的变量,这些变量作为参数传递给SQL Server。你会有一些像cmd.Parameters = arrparams更进一步。

围绕SQL文本的实际String.Format部分是多余的,你是对的,它会使用大括号路由,如你所建议的。

希望这会有所帮助。