#c# #sqlite #date
#c# #sqlite #Дата
Вопрос:
Я хочу скопировать выбранную дату из элемента управления monthCalender в базу данных sqlite на c #. Пытался сделать это с помощью toString : выдал мне эту форму строки (ММ-ДД-ГГГГ-00:00:00 УТРА) и логическую ошибку из sqlite. Пытался сделать это с помощью ToShortDateString: он выдал мне эту строку (ММ-ДД-ГГГГ). Ошибка sqlite отсутствует до повторной проверки записи.На этот раз ошибка была «строка не была распознана как допустимая дата-время». Я знаю, что формат даты для sqlite — ГГГГ-ММ-ДД. Должен ли я преобразовать строку?
string startdate = monthCalendar1.SelectionRange.Start.ToShortDateString();
string query = $"UPDATE status SET user = {listBox1.SelectedValue}"
$" , userbadge = {listBox2.SelectedValue} "
$" , date = {startdate}"
$" WHERE status.id = {index}";
openConnection();
SQLiteCommand com = new SQLiteCommand(query, connection);
com.ExecuteNonQuery();
closeConnection();
Комментарии:
1. Каково определение таблицы? И какой драйвер вы используете? Я бы не рекомендовал это для выполнения обновления. Это открывает ваше приложение для внедрения SQL.
2. Я действительно предлагаю использовать параметры (если это Microsoft.Data.SQLite) . Они также упрощают обработку даты и времени. Фактически, это может полностью устранить вашу проблему.
Ответ №1:
Я думаю, вы можете решить свою проблему, просто используя параметры:
command.CommandText =
@"
UPDATE status SET user = $user, userbadge = $userbadge, date = $startdate WHERE status.id = $index
";
command.Parameters.AddWithValue("$user", listBox1.SelectedValue);
command.Parameters.AddWithValue("$userbadge", listBox2.SelectedValue);
command.Parameters.AddWithValue("$startdate ", startdate );
command.Parameters.AddWithValue("$index", index);
Согласно этому документу, значение будет сохранено как «гггг-ММ-дд ЧЧ: мм: сс.FFFFFFF».
Ответ №2:
Решение с параметрами привело к той же ошибке. После дальнейшего поиска я обнаружил, что, возможно, преобразование строки выполнит эту работу. И да, это сработало!!!
DateTime datetime = Convert.ToDateTime(startdate);
Комментарии:
1.Ах, я почему-то предположил, что
startDate
это ужеDateTime
.