C# Значение из текстового поля превращается в значение по умолчанию при вставке в базу данных mySQL

Я создаю приложение форм Windows, которое позволяет пользователю выбирать значения из MonthCalendar, а затем вставлять их в базу данных. Я использую следующие методы для отображения дат в текстовых полях.

     private void checkIn_DateChanged(object sender, DateRangeEventArgs e)
     {
        var monthCalendar = sender as MonthCalendar;
        txtcheckIn.Text = monthCalendar.SelectionStart.ToShortDateString();
     }

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

    private void Insert()
    {
        using (var command = new SqlCommand("INSERT INTO Reservation (NumAdults,NumChildren,RoomType,CheckIn,Checkout) " +
                    "VALUES (@numAdults,@numChildren,@roomType,@checkIn,@checkout)"))
        {
            try
            {    
                command.Connection = connection;
                connection.Close();

                // Enters Reservation fields into the parameters of the SQL Query
                command.Parameters.AddWithValue("@numAdults", txtNumAdults.Text);
                command.Parameters.AddWithValue("@numChildren", txtNumChild.Text);
                command.Parameters.AddWithValue("@roomType", roomTypeBox.GetItemText(roomTypeBox.SelectedItem));
                command.Parameters.AddWithValue("@checkIn", txtcheckIn.Text);
                command.Parameters.AddWithValue("@checkout", txtcheckOut.Text);
                // Opens connection and checks if query affects Reservation table
                connection.Open();                    
                if (command.ExecuteNonQuery() > 0)
                {
                    // If the query was successful, alert user and display updated Client Table
                    MessageBox.Show("Reservation Record Successfully Inserted.");                       
                    connection.Close();
                    displayReservations();
                    resetReservationFields();
                }
                else
                {
                    // Insertion failed, show user message
                    MessageBox.Show("Record Insertion Failed.");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error Inserting: No fields entered. \n" + ex);
            }
            finally
            {                  
                    connection.Close();            
            }

Формат дат в базе данных - «datetime», и я не понимаю, что происходит с датой из текстового поля.

попробуйте преобразовать текст в DateTime.

Gaurang Dave 27.03.2018 08:58

command.Parameters.AddWithValue ("@ checkIn", Convert.ToDateTime (txtcheckIn.Text));

Gaurang Dave 27.03.2018 08:59

Спасибо за быстрый ответ. Я попробовал это, и теперь это ошибка "Строка не была распознана как допустимая дата и время"

user7800543 27.03.2018 09:05

Какое значение имеет txtcheckIn.Text?

Gaurang Dave 27.03.2018 09:05

txtcheckIn.Text = row.Cells [4] .Value.ToString (); // Я использую это в методе для заполнения DataGridview

user7800543 27.03.2018 09:17

Я хочу знать значение txtcheckIn.Text = row.Cells [4] .Value.ToString () ;. Что для этого отображается в DataGridView? Послушайте, вам нужно предоставить правильную информацию, тогда кто-то сможет вам помочь.

Gaurang Dave 27.03.2018 09:18

Когда я использовал Convert.ToDateTime, он просто начал выдавать ошибку, и ячейки оставались пустыми. Без него он просто вставлял в ячейку «1900-01-01».

user7800543 27.03.2018 09:32

используйте «SelectionStart», это дата и подходит для sql. сохраните это значение в переменной, которую вы можете использовать в своем методе вставки (предполагается, что у вас есть столбец date или datetime в таблице базы данных)

nabuchodonossor 27.03.2018 09:33

Я использую его так: txtcheckIn.Text = monthCalendar.SelectionStart.ToShortDateString ();

user7800543 27.03.2018 09:37

@KKKK, я думаю, ты новенький. Мне нужно значение row.Cells [4] .Value.ToString (); Вы можете отладить и получить значение этого выражения. Надеюсь, вы получаете то, о чем я прошу.

Gaurang Dave 27.03.2018 10:20

Ой, извините, я не очень хорошо разбираюсь в разъяснениях. Думаю, теперь я вас понял. Отладчик показывает, что значение - это строка типа {Text = "1900-01-01 12:00:00 AM"}

user7800543 27.03.2018 10:39
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
11
68
0

Другие вопросы по теме