Я создаю приложение форм 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», и я не понимаю, что происходит с датой из текстового поля.
command.Parameters.AddWithValue ("@ checkIn", Convert.ToDateTime (txtcheckIn.Text));
Спасибо за быстрый ответ. Я попробовал это, и теперь это ошибка "Строка не была распознана как допустимая дата и время"
Какое значение имеет txtcheckIn.Text?
txtcheckIn.Text = row.Cells [4] .Value.ToString (); // Я использую это в методе для заполнения DataGridview
Я хочу знать значение txtcheckIn.Text = row.Cells [4] .Value.ToString () ;. Что для этого отображается в DataGridView? Послушайте, вам нужно предоставить правильную информацию, тогда кто-то сможет вам помочь.
Когда я использовал Convert.ToDateTime, он просто начал выдавать ошибку, и ячейки оставались пустыми. Без него он просто вставлял в ячейку «1900-01-01».
используйте «SelectionStart», это дата и подходит для sql. сохраните это значение в переменной, которую вы можете использовать в своем методе вставки (предполагается, что у вас есть столбец date или datetime в таблице базы данных)
Я использую его так: txtcheckIn.Text = monthCalendar.SelectionStart.ToShortDateString ();
@KKKK, я думаю, ты новенький. Мне нужно значение row.Cells [4] .Value.ToString (); Вы можете отладить и получить значение этого выражения. Надеюсь, вы получаете то, о чем я прошу.
Ой, извините, я не очень хорошо разбираюсь в разъяснениях. Думаю, теперь я вас понял. Отладчик показывает, что значение - это строка типа {Text = "1900-01-01 12:00:00 AM"}





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