在SELECT查询中使用WHERE之后的多个参数

时间:2016-03-15 11:25:11

标签: c# parameters oledbcommand

我正在尝试避免填充表并使用多个查询和语句从DataGridView中选择表示Holiday的特定ID。

我正在尝试做什么?

到目前为止我得到的代码如下:

string HolidayIDQuery = "SELECT ID FROM [Holiday] WHERE PayrollNo=@PayrollNo + StartDate=@StartDate + EndDate=@EndDate"; 
OleDbCommand GetHolID = new OleDbCommand(HolidayIDQuery, conn);
GetHolID.Parameters.AddWithValue("@PayrollNo", GotPayroll);
GetHolID.Parameters.AddWithValue("@StartDate", OleDbType.Date).Value = Convert.ToDateTime(dataGridView1.Rows[LineIndex].Cells[1].Value);
GetHolID.Parameters.AddWithValue("@EndDate", OleDbType.Date).Value = Convert.ToDateTime(dataGridView1.Rows[LineIndex].Cells[2].Value);
int HolID = Convert.ToInt32(GetHolID.ExecuteScalar());

我在底线得到了这个错误。

  

抛出异常:System.Data.dll中的'System.Data.OleDb.OleDbException'

     

其他信息:标准表达式中的数据类型不匹配。

2 个答案:

答案 0 :(得分:4)

您可以在AND子句中使用WHERE

WHERE PayrollNo=@PayrollNo AND StartDate=@StartDate AND EndDate=@EndDate;

您可能还想尝试SQL教程:https://www.google.com/webhp?q=sql%20tutorial

答案 1 :(得分:1)

您的查询中似乎是一个错误。而不是

SELECT ID 
FROM [Holiday] 
WHERE PayrollNo=@PayrollNo + StartDate=@StartDate + EndDate=@EndDate

试试这个:

SELECT ID FROM [Holiday] 
WHERE PayrollNo=@PayrollNo 
      AND StartDate=@StartDate 
      AND EndDate=@EndDate"