2010-10-07 25 views
0

我想爲select語句編寫參數化查詢。但它給出的例外是「必須聲明變量'@'。」如何聲明這個變量。如何從asp.net中選擇參數化查詢

我的代碼如下:

SqlConnection con = null; 
     SqlCommand cmd = null; 
     try 
     { 
      //int @[MONTH_FOR], @[YEAR_FOR]; 
      con = new SqlConnection("Data Source=192.168.10.3;Initial Catalog=GPSTrainees;user id=gp;password=gp"); 
      con.Open(); 
      string select = @"SELECT [COMPONENT_NAME] ,[COMPONENT_AMOUNT] 
          FROM [GoalPlanForTrainees].[gp].[TEAM_FUNDS_DETAILS] 
          WHERE [MONTH_FOR] = @[MONTH_FOR] AND [YEAR_FOR] = @[YEAR_FOR]"; 
      cmd = new SqlCommand(select, con); 
      cmd.Parameters.Add(new SqlParameter("@[MONTH_FOR]", Convert.ToInt32(TextBox1.Text.Trim()))); 
      cmd.Parameters.Add(new SqlParameter("@[YEAR_FOR]",Convert.ToInt32(TextBox2.Text.Trim()))); 
      DataSet ds = new DataSet(); 
      SqlDataAdapter adp = new SqlDataAdapter(select, con); 
      adp.Fill(ds); 
      GridView1.DataSource = ds; 
      GridView1.DataBind(); 
     } 
     catch (Exception ex) 
     { 
     } 
     finally 
     { 
      if (con != null) 
      { 
       con.Close(); 
      } 
     }`enter code here` 

回答

0

在創建參數,請刪除「@」,在參數名稱的前面。像這樣的:

cmd.Parameters.Add(new SqlParameter("[MONTH_FOR]", Convert.ToInt32(TextBox1.Text.Trim()))); 

希望這應該有所幫助。

+0

這是正確的? msdn示例顯示帶參數名稱的「@」。 http://msdn.microsoft.com/en-us/library/0881fz2y.aspx – lincolnk 2010-10-07 14:09:29

0

把變量聲明中的SQL語句。所以移動int @ [MONTH_FOR],@ [YEAR_FOR]; 到 @「int @ [MONTH_FOR],@ [YEAR_FOR]; SELECT [COMPONENT_NAME],[COMPONENT_AMOUNT] FROM [GoalPlanForTrainees]。[gp]。[TEAM_FUNDS_DETAILS] WHERE [MONTH_FOR] = @ [MONTH_FOR] AND [YEAR_FOR] = @ [YEAR_FOR]「;

乾杯跳跳虎