我正在尝试避免填充表并使用多个查询和语句从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'
其他信息:标准表达式中的数据类型不匹配。
答案 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"