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

时间:2014-12-26 11:41:31

标签: c# asp.net .net

我使用以下代码执行存储过程。但问题是字符串strGroup是一个硬编码值,我需要在单引号中传递字符串,当我运行它时,SP没有被执行。

CODE:

 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();                        
    }

如果我在SQL服务器中使用传递参数执行SP,它可以很好地工作,并且在用单引号传递字符串时不确定我是否做错了。当我犯错误时,有人可以帮助我。

1 个答案:

答案 0 :(得分:1)

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

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

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