我使用以下代码执行存储过程。但问题是字符串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,它可以很好地工作,并且在用单引号传递字符串时不确定我是否做错了。当我犯错误时,有人可以帮助我。
答案 0 :(得分:1)
当您将变量作为参数发送时,不需要引号。在某些情况下,人们编写SQL查询并执行它们。例如,如果您在代码中编写此查询,则需要添加单引号
var name = "Sefa";
var query = string.Format("INSERT INTO [People](Name) VALUES('{0}')",name);
但是当你通过SqlCommand类进行操作时,可以按原样发送变量。所以,只需删除单引号。