2014-12-26 2 views
1

아래 코드를 사용하여 저장 프로 시저를 실행하고 있습니다. 하지만 문제는 문자열 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를 실행합니다. 실수 할 때 누군가가 나를 도울 수 있습니까?

+3

작은 따옴표를 추가하지 마십시오. 명령 매개 변수를 사용하면 값이 이미 따옴표로 묶입니다. –

+0

다음 코드를 시도하십시오. string strGroup = Server.HtmlEncode (" 'Sub Group'"); –

답변

1

매개 변수로 변수를 보낼 때 따옴표가 필요하지 않습니다. 일부 시나리오에서는 사람들이 SQL 쿼리를 작성하고 실행합니다. 코드에서이 쿼리를 작성하는 경우 예를 들어, 작은 따옴표

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

그러나 당신이하는 SqlCommand 클래스를 통해 그 일을 할 때 그대로, 당신은 변수를 보낼 수 있습니다를 추가해야합니다. 그래서 작은 따옴표를 제거하십시오.

+0

문제는 내 매개 변수에이 하위 그룹과 같은 두 단어가 있으며이 값을 전달할 수 없다는 것입니다. 내가 틀렸다면 나를 바로 잡아라. – Michael

+0

@Michael 매개 변수로 전달할 수 있습니다. 아무리 많은 단어가 있더라도 따옴표로 둘러 쌀 것입니다. – Sefa

관련 문제