C# 使用引号将参数传递给SQL server SP

C# 使用引号将参数传递给SQL server SP,c#,sql,stored-procedures,parameters,sqlcommand,C#,Sql,Stored Procedures,Parameters,Sqlcommand,我正在使用C#中的SqlCommand类在SQL server上执行存储过程。目前,我只是构建一个执行字符串,将参数值解析为存储过程,然后在服务器上执行该字符串。问题是当我有引号时,字符串不能正确传递 是否可以使用SqlParameter对象传入参数,而不必担心从引号中转义?简单地说,是的-您应该使用SqlParameter对象,而不是字符串串联,至少要防止SQL注入攻击。使用SqlParameter时,您可以指定参数的类型和大小。这样做可以确保执行计划的重复使用(虽然StoredProcs没有

我正在使用C#中的SqlCommand类在SQL server上执行存储过程。目前,我只是构建一个执行字符串,将参数值解析为存储过程,然后在服务器上执行该字符串。问题是当我有引号时,字符串不能正确传递


是否可以使用SqlParameter对象传入参数,而不必担心从引号中转义?

简单地说,是的-您应该使用SqlParameter对象,而不是字符串串联,至少要防止SQL注入攻击。

使用SqlParameter时,您可以指定参数的类型和大小。这样做可以确保执行计划的重复使用(虽然StoredProcs没有这个问题),但也可以确保您不必担心转义和引用—这一切都为您完成。

是的,这是发送参数的首选方式

例如:

using (SqlCommand cmd = new SqlCommand("SomeProcedure", connection) {
  cmd.Parameters.Add("@Id", SqlDbType.Int).Value = 42;
  cmd.Parameters.Add("@Text", SqlDbType.Varchar, 50).Value = "A string value";
  cmd.ExecuteNonQuery();
}

听起来像是小鲍比桌子的工作。