2017-10-07 74 views
1

我想记录的1天到30天的查询是在SQL工作正常一天到30天C#

SELECT * FROM Tbl_order WHERE date >= DATEADD(day, -1, GETDATE()) 

所以我在C#没有我使用组合框中选择记录

int CmboDays; 

for (CmboDays = -1; CmboDays >= -30; CmboDays--) 
      { 
       comboBox1.Items.Add(CmboDays); 
      } 

     private void orderBySearchDays() 
     { 
      string c = comboBox1.Text; 
      int x = Convert.ToInt32(c); 

      using (connection = new SqlConnection(connectionString)) 
      using (SqlDataAdapter adapter = new SqlDataAdapter("select* from Tbl_order WHERE date >= DATEADD(day,'"+ x + "', GETDATE()) ; ", connection)) 
      {     

       DataTable Tbl_order = new DataTable(); 
       connection.Open(); //opens the connection 
       adapter.Fill(Tbl_order); 
       connection.Close(); //Closes the connection 

       lst_CustomerNo.DataSource = Tbl_order; //assigns a datasource 
       lst_CustomerNo.DisplayMember = "CustomerNo"; //assigns display 
       lst_CustomerNo.ValueMember = "CustomerNo"; 

       lst_OrderName.DataSource = Tbl_order; 
       lst_OrderName.DisplayMember = "OrderName"; 
       lst_OrderName.ValueMember = "OrderName"; 

       lst_Quantity.DataSource = Tbl_order; 
       lst_Quantity.DisplayMember = "Quantity"; 
       lst_Quantity.ValueMember = "Quantity"; 

       lst_Price.DataSource = Tbl_order; 
       lst_Price.DisplayMember = "Price"; 
       lst_Price.ValueMember = "Price"; 

       lst_datetime.DataSource = Tbl_order; 
       lst_datetime.DisplayMember = "Date"; 
       lst_datetime.ValueMember = "Date"; 

      } 
     } 

因此所有的数据将在列表框中显示

我得到这个错误

System.Data.dll中发生未处理的“System.Data.SqlClient.SqlException”类型异常

附加信息:参数数据类型varchar对于dateadd函数的参数2无效。

我在做那个错吗? 如何解决错误?

+1

使用的参数。不要使用输入值查询字符串。 –

回答

1

你能chnage与x.ToString X(),并删除“

using (SqlDataAdapter adapter = new SqlDataAdapter("select * from Tbl_order WHERE date >= DATEADD(day,"+ x.ToString() + ", GETDATE()) ; ", connection)) 
+0

我试过了,但仍然一样错误 –

+1

您是否在x之前和之后删除了'char? –

+0

它工作^^谢谢。我的错误^^“ –