Запрос SQL SELECT не извлекает строки из простой базы данных Access - PullRequest
0 голосов
/ 18 декабря 2011

Столбец DayDate в базе данных имеет тип DateTime и я передаю строку, сформулированную с использованием DateTimePicker в форме.reader.HasRows всегда возвращает false !!Я не знаю, что я делаю не так.Любая помощь будет оценена.Код, который я использовал ниже.

if (!this.con.IsConnected())
{
   this.con.Connect();
}

this.cmd = new OleDbCommand("SELECT DayNo FROM [Calendar] WHERE DayDate = " + date + "", this.con.conObj());

this.reader = cmd.ExecuteReader();
this.reader.Read();

int dayNo;
if (this.reader.HasRows)
{
   dayNo = int.Parse(reader[0].ToString());
}
else
{
   throw new InfoException("The system could not locate the date in the system");
}

1 Ответ

1 голос
/ 18 декабря 2011

Проблема в том, что вы сравниваете значение Date с DateTime, так что по сути вы можете сравнивать значения следующим образом:

DayDate = "2011-12-18 14:22:54"
Date = "2011-12-18 00:00:00"

Вам нужно укоротить часть времени из дат вашей БД, попробуйте что-то вроде этого:

"SELECT DayNo FROM [Calendar] WHERE dateadd(dd, 0, datediff(dd, 0, DayDate)) = " + date

Или, если вы используете SQL Server 2008, вы можете сделать:

"SELECT DayNo FROM [Calendar] WHERE cast(DayDate As Date) = " + date
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...