DateTime.Now, чтобы mysql datetime - PullRequest
       1

DateTime.Now, чтобы mysql datetime

0 голосов
/ 03 сентября 2010

У меня проблема с запросом, получилось что-то вроде этого

command.CommandText = "SELECT " +
        "COUNT(a.`id`) " +
   "FROM " +
        "`messageaccess` a " +
   "WHERE " +
        "a.`Users_LOGIN` = '" + Settings.UserLogin + "' " +
        "AND a.`Status` = '" + Enums.MessageStatus.New + "' " +
        "AND a.`FOLDER` = '" + Enums.MessageFolder.INBOX + "'" +
        "AND a.`ShowAlert` = '" + Enums.YesNo.No + "'" +
        "AND a.`Postponed` <= " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "";

но sql бросает мне исключение У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса, который можно использовать около 14: 40: 37 в строке 1

пробовал разные комбинации, но ничего не работает: (

Ответы [ 5 ]

3 голосов
/ 03 сентября 2010

Простой ответ - не вставлять значения непосредственно в SQL для начала.

Используйте параметризованный оператор SQL, укажите значение параметра как DateTime.Now, и все будет хорошо:

  • Ваш SQL будет легче читать (так как он будет просто кодом, а не данными)
  • Вам не нужно беспокоиться о форматировании таких вещей, как числа и даты
  • Вы не будете уязвимы для Атаки SQL-инъекции
2 голосов
/ 03 сентября 2010

Вы забыли кавычки вокруг даты / времени.

1 голос
/ 03 сентября 2010

попробуйте использовать эту строку вместо:

"AND a.`Postponed` <= NOW()" 

и должно работать с встроенной функцией MySql на текущий момент.

0 голосов
/ 03 сентября 2010

Вы не должны строить свой запрос, добавляя строки.Это не очень безопасно (внедрение SQL), и вы не используете возможности ADO .NET для установки правильного формата в соответствии с типом параметра.

Вам следует использовать параметризованные запросы.

0 голосов
/ 03 сентября 2010

Посмотрите на именованные параметризованные запросы . Они позаботятся об этих проблемах форматирования для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...