Рейтинг:
7
phil.o
DateTime.Now
уже дает вам действительное значение DateTime. Почему ты пытаешься обратить его дважды?
Кроме того, вы не должны создавать SQL-запросы путем объединения строк, как вы это делаете; вместо этого вы должны использовать параметризованные запросы.
Защитите свои данные: предотвратите SQL-инъекцию[^]
Наконец, поля datetime в базе данных должны иметь тип datetime, а не тип string (или varchar/nvarchar). То, как вы написали свой запрос (заключив значение DateTime между одинарными кавычками), заставляет меня думать, что вы храните datetimes в виде строк, что является плохой практикой.
Ты можешь попробовать:
DateTime _date = DateTime.Now;
// Replace your string concatenations with proper SQL parameters specifications
SqlCommand command2 = new SqlCommand("SELECT date, acno, machinenumber, modified FROM CHECKINCHECKOUT WHERE acno = @sdwEnrollNumber AND modified = 0 AND machinenumber = @iMachineNumber AND date = @_date", con);
// Add required parameters to your command, along with their respective values
command2.Parameters.AddWithValue("@sdwEnrollNumber", sdwEnrollNumber);
command2.Parameters.AddWithValue("@iMachineNumber", iMachineNumber);
command2.Parameters.AddWithValue("@_date", _date);
// Finally open the connection and perform the query
con.Open();
SqlDataReader reader2 = command2.ExecuteReader();
// ...
reader2.Close();
con.Close();
Надеюсь, это поможет. Любезно.
Редактировать:
Пытаясь исправить проблему с форматом, вы можете попробовать:
string formattedDateTime = _date.ToString("yyyy-MM-dd hh:mm:ss");
Tom G/mariam
Я трайду этот код. но не решен. когда я отслеживаю значение _date, оно показывает мне
2017-11-22 14:14:14 нм. что значит "Нм"? Мне нужно только 2017-11-22 14:14:14. он отлично работает на одном компьютере, но генерирует на другом компьютере. ths показывает мне, что проблема заключается в настройке формата даты. любое исцеление пожалуйста
phil.o
Если формат datetime корректен на одном компьютере, а не на другом, то я подозреваю, что проблема заключается во втором компьютере, а не в коде. Я искал nm о датах и часовых поясах, и единственным результатом, который я нашел, был код часового пояса для Нью-Мексико. Я понятия не имею о значении этого суффикса nm.
Может быть, это определитель времени для Амхарской, Оромской или Тигринской культуры?
Пожалуйста, смотрите мой отредактированный ответ на попытку отображения даты-времени в нормализованном формате.
Tom G/mariam
большое спасибо, Фил, что ты решил эту проблему. когда я использую ваш код
_date датавремя = Датавремя.Сейчас;
// Заменить сцепление при правильной спецификации параметров SQL
Sqlcommand, который команда2 = новая команда sqlcommand("Select дата, acno, machinenumber, модифицированных с CHECKINCHECKOUT где acno = @sdwEnrollNumber и изменен = 0 и machinenumber = @iMachineNumber и дата = @_date", кон);
// Добавьте необходимые параметры в вашу команду вместе с их соответствующими значениями
command2.параметры.AddWithValue ("@sdwEnrollNumber", sdwEnrollNumber);
command2.параметры.AddWithValue ("@iMachineNumber", iMachineNumber);
command2.параметры.AddWithValue("@_date", _date);
// Наконец откройте соединение и выполните запрос
кон.Открыть();
Класс sqldatareader reader2 и = команда2.Метода executereader();
// ...
reader2 и.Рядом();
кон.Рядом();
...- действительно танк ты
Tom G/mariam
Привет, Фил.о, у меня есть datatable с именем shifttable. Я хочу узнать строки, передавая параметры datetime, но он генерирует ту же ошибку, что и раньше, то есть преобразование не удалось . что мне нужно, так это как передать параметр для datatable. могу ли я помочь вратам, пожалуйста?
вот мой код
Периода датавремя= Датавремя.сейчас
DataRow[] found = shifttable.Выберите("EMPLOYEEID ='" + empid.ToString() + "' и STARTDATE<='" + daterange + "' и ENDDATE>='" + daterange + "'");
phil.o
Опять же, не создавайте подобные SQL - запросы путем объединения строковых полей; используйте параметризованный запрос как я тебе и показывал. Это позволит прояснить многие вопросы.
Tom G/mariam
я-я, сэр, могу ли я получить пример кода, как передавать параметры для таблицы данных и получать строки по этим критериям? Заранее спасибо.
phil.o
Я уже приводил вам пример из кода в вашем вопросе.
Пожалуйста откройте новый вопрос для этого конкретного вопроса. Есть что сказать о вашем втором примере кода, но это не удобно делать в комментариях к уже ответившему вопросу.
Tom G/mariam
Привет всем, у меня есть datatable с именем shifttable. Я хочу узнать строки, передавая параметры datetime, но он генерирует ту же ошибку, что и раньше, то есть преобразование не удалось . что мне нужно, так это как передать параметр для datatable. могу ли я помочь вратам, пожалуйста?
вот мой код
Периода датавремя= Датавремя.сейчас
DataRow[] found = shifttable.Выберите("EMPLOYEEID ='" + empid.ToString() + "' и STARTDATE<='" + daterange + "' и ENDDATE>='" + daterange + "'");