C# 用单引号将参数传递给存储过程

C# 用单引号将参数传递给存储过程,c#,asp.net,.net,C#,Asp.net,.net,我正在使用下面的代码执行一个存储过程。但是问题是字符串strGroup是一个硬编码的值,我需要用单引号传递该字符串,当我运行该命令时,SP不会被执行 代码: protected void Page_Load(object sender, EventArgs e) { string CS = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; SqlCon

我正在使用下面的代码执行一个存储过程。但是问题是字符串
strGroup
是一个硬编码的值,我需要用单引号传递该字符串,当我运行该命令时,SP不会被执行

代码:

 protected void Page_Load(object sender, EventArgs e)
    {
        string CS = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        SqlConnection connection = new SqlConnection(CS);
        SqlCommand command = new SqlCommand();
        SqlDataAdapter adapter = new SqlDataAdapter();
        DataTable dt = new DataTable();  
        string strGroup = "'Sub Group'";
        try
        {
            connection.Open();
            command.Connection = connection;
            command.CommandType = CommandType.StoredProcedure;
            command.CommandText = "SP_Code";
            command.Parameters.AddWithValue("@Group",strGroup);
            adapter = new SqlDataAdapter(command);
            adapter.Fill(dt);

            var query = from r in dt.AsEnumerable()
                        where r.Field<string>("Organization") == "Nestle"
                        select new
                        {
                            Department = r["Department "].ToString(),
                            Group = r["L2 Group"].ToString(),
                            Code = r["Code"].ToString()                               
                        };
            GridView1.DataSource = query;
            GridView1.DataBind();                        
    }
受保护的无效页面加载(对象发送方,事件参数e)
{
字符串CS=ConfigurationManager.ConnectionString[“ConnectionString”].ConnectionString;
SqlConnection=newsqlconnection(CS);
SqlCommand=newsqlcommand();
SqlDataAdapter=新的SqlDataAdapter();
DataTable dt=新的DataTable();
字符串strGroup=“‘子组’”;
尝试
{
connection.Open();
command.Connection=连接;
command.CommandType=CommandType.storedProcess;
command.CommandText=“SP_代码”;
command.Parameters.AddWithValue(“@Group”,strGroup);
adapter=newsqldataadapter(命令);
适配器填充(dt);
var query=来自dt.AsEnumerable()中的r
其中r.Field(“组织”)=“雀巢”
选择新的
{
Department=r[“Department”].ToString(),
Group=r[“L2组”].ToString(),
代码=r[“代码”].ToString()
};
GridView1.DataSource=查询;
GridView1.DataBind();
}

如果我在SQL server中通过传递参数来执行SP,它会正常工作,并且不确定在单引号中传递字符串时是否出错。当我出错时,是否有人可以帮助我。

当您将变量作为参数发送时,不需要引号。在某些情况下,人们编写SQL查询并执行例如,如果您在代码中编写此查询,则需要添加单引号

var name = "Sefa";
var query = string.Format("INSERT INTO [People](Name) VALUES('{0}')",name);

但是,当您通过SqlCommand类执行此操作时,可以按原样发送变量。因此,只需删除单引号。

您不应该添加单引号。通过使用命令参数,值将已被引号包围。请尝试以下代码:string strGroup=Server.HtmlEncode('Sub Group'));问题是我的参数有两个类似于
子组的单词,我不能简单地传递这个值。如果我错了,请纠正我。@Michael,您仍然可以将其作为参数传递。无论有多少个单词,它们都将被引号包围。