2014-08-08 2 views
3

мне нужно несколько help.this мой код:Проблемы с OLEDB и DATETIME

OleDbCommand cmd = new OleDbCommand("SELECT * FROM Request " + "WHERE _Date >= " + "@Dt", con); 
cmd.Parameters.Add("@Dt", OleDbType.Date); 
cmd.Parameters["@Dt"].Value = DateTime.Now; 
using (IDataReader reader = cmd.ExecuteReader()) 
{ } 

Но она возвращает исключение:

«Ошибка синтаксиса в выражении запроса '_DATE> = @Dt' «. OleDb Исключение

и с этим кодом:

OleDbCommand cmd = new OleDbCommand("SELECT * FROM Request " + "WHERE _Date > " + "'" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") +"'", con); 
using (IDataReader reader = cmd.ExecuteReader()) 
{ } 

он возвращает

«Ошибка синтаксиса в выражении запроса '_DATE> '2014-08-08 10:55:04'' «.

Что здесь не так?

+1

Я бы избегал имен столбцов, у которых есть подчеркивание спереди, и я также попытаюсь дать ему лучшее имя, например RequestDate. Попробуйте положить поле в скобки: [_Date]. – LarsTech

+0

@LarsTech, Изменение имен столбцов и работы. спасибо – user886550

ответ

3

Несмотря на подчеркивание, название Дата зарезервированное слово, так что вы, вероятно, следует поместить имя поля в скобках:

WHERE [_Date] > @Dt 

Лучше всего избегайте зарезервированных слов и используйте лучшее описание для имени поля, например RequestDate. Я бы также избежал запуска имени столбца с подчеркиванием.

0

Вместо того, чтобы подвергать ваш SQL инъекции путем объединения вашего sql вместе, используйте placeholder для параметра.

OleDbCommand cmd = new OleDbCommand("SELECT * FROM Request WHERE _Date > ?", con); 
cmd.Parameters.AddWithValue("@Date", DateTime.Now); 
+0

не работает. Ошибка синхронизации в выражении запроса '_Date>?'. – user886550

1

Попробуйте как этот

OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Request] WHERE [_Date] >= @Date", con); 
cmd.Parameters.AddWithValue("@Date", DateTime.Now); 
+0

Ошибка синтаксиса в выражении запроса '_Date> @Date'. – user886550

+0

@ user886550, пожалуйста, предоставьте полное описание ошибки. – user3834541

+0

@ user886550, но это полное описание ошибки – user886550

Смежные вопросы