Использование нескольких параметров после WHERE в запросе SELECT

Я пытаюсь избежать заполнения таблицы и использования нескольких запросов и операторов для выбора определенного идентификатора, представляющего праздник, из DataGridView.

Возможно ли то, что я пытаюсь сделать?

Код, который у меня есть до сих пор, выглядит следующим образом:

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.OleDb.OleDbException» в System.Data.dll

Дополнительная информация: Несоответствие типа данных в выражении критерия.


person Josh    schedule 15.03.2016    source источник
comment
Используйте and вместо +!   -  person Salah Akbari    schedule 15.03.2016
comment
+ не то же самое, что AND   -  person user1666620    schedule 15.03.2016


Ответы (2)


Вы можете использовать AND в предложении WHERE:

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

Вы также можете попробовать учебник по SQL: https://www.google.com/webhp?q=sql%20tutorial

person mikeb    schedule 15.03.2016
comment
я не уверен, почему за это проголосовали - может ли даунвотер объяснить? - person user1666620; 15.03.2016
comment
Всем привет! Не могу поверить, что я не пробовал это! Спасибо! РЕДАКТИРОВАТЬ: я отмечу это как ответ, как только смогу - person Josh; 15.03.2016

Кажется, это ошибка в вашем запросе. Вместо

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

попробуй это:

SELECT ID FROM [Holiday] 
WHERE PayrollNo=@PayrollNo 
      AND StartDate=@StartDate 
      AND EndDate=@EndDate"
person Bigjim    schedule 15.03.2016
comment
Спасибо, я сделал это, и это отлично работает! Не могу поверить, что я еще не пробовал это! - person Josh; 15.03.2016