Сonversion failed when converting date and or/time from a character to string c# Помогите Решить [дубликат]

111
27 октября 2021, 12:30
На этот вопрос уже даны ответы здесь:
Ошибка при попытке вставить дату в ms sql (3 ответа)
Закрыт 1 год назад.

Никак не могу решить проблему с конверсией. В БД значение столбцов : date и time, использую DateTimePicker в WinForms и создаю новые переменные в которые записываю только дату и только время, передаю в запрос и ошибка Conversion failed .... Ошибка в строке string Query и SqlCommand comAdd = new SqlComman(Query, con); Название ошибки в заголовке

SqlConnection con = new SqlConnection(ConnectionString);
                    con.Open();
                string StartTime = HLStartTime.Value.Hour.ToString() + "-" + HLStartTime.Value.Minute.ToString() + "-" + HLStartTime.Value.Second.ToString();
                //string StartTime = HLStartTime.Value.ToString("hh-mm-ss");
                string FinishTime = HLFinishTime.Value.Hour.ToString() + "-" + HLFinishTime.Value.Minute.ToString() + "-" + HLFinishTime.Value.Second.ToString();
                //string FinishTime = HLFinishTime.Value.ToString("hh-mm-ss");
                string Date = DateOfOpening.Value.Year.ToString() + "-" + DateOfOpening.Value.Month.ToString() + "-" + DateOfOpening.Value.Day.ToString();
                //string Date = DateOfOpening.Value.ToString("yyyy-MM-dd");
                string Query = "INSERT INTO Hotlines (Name, Work_start_time, Work_end_time, Date_of_opening) VALUES('" + HotLineName.Text.ToString() + "', '" + StartTime + "', '" + FinishTime + "', '" + Date + "')";
                SqlCommand comAdd = new SqlCommand(Query, con);
                comAdd.ExecuteNonQuery();
                MessageBox.Show("Hot line added");
                con.Close();
Answer 1

Во первых абсолютно верно - используйте параметризированные запросы. А во вторых - какой тип у этих work_start_time, work_end_time и т.д. в самой бд? если там тип datetime, timestamp, а вы пытаетесь ей пихать string, она и скажет ошибку конвертации.

У меня нет сейчас студии под рукой, но это всё должно выглядеть как-то так:

using (SqlConnection connection = new SqlConnection(Connection))
{
    connection.Open();
    string sql = "INSERT INTO Hotlines (Name, Work_start_time, Work_end_time, Date_of_opening) VALUES(@Name, @Work_start_time, @Work_end_time, @Date_of_opening)";
    using (SqlCommand cmd = new SqlCommand(sql, connection))
    {
    cmd.Parameters.AddWithValue("@Name", DbType.String).Value = HotLineName.Text;
    cmd.Parameters.AddWithValue("@Work_start_time", DbType.Time).Value = HLStartTime.Value;
    cmd.Parameters.AddWithValue("@Work_end_time", DbType.Time).Value = HLFinishTime.Value;
    cmd.Parameters.AddWithValue("@Date_of_opening", DbType.Date).Value = DateOfOpening.Value;
    cmd.CommandType = CommandType.Text;
    cmd.ExecuteNonQuery();
    }
}
READ ALSO
Валидация кода на C#

Валидация кода на C#

Есть файлы расширения cs, которые генерируются утилитойМне необходимо программно проверять на корректность сгенерируемые файлы программно

123
Где Word хранит свои картинки?

Где Word хранит свои картинки?

В общем, есть много Word'ов, которые я обрабатываю через interop и пытаюсь вытянуть картинки, что бы их сохранить отдельно

85
Как связать List с ListView в XAML?

Как связать List с ListView в XAML?

Подскажите как в Xaml, через DataContext или ItemSource(или я не правильно думаю, что бы прибиндить из XAML свою коллекцию _ListProduct(Желательно с тремя столбиками,...

90
Как массиву спрайтов можно присвоить значение?

Как массиву спрайтов можно присвоить значение?

Есть массив спрайтов,у каждого элемента свой цвет и картинкаКак можно через enum(или другим способом) присвоить значение каждому элементу

105