Я хочу сохранить столбец datetime picker datagridview в базе данных.
Я использовал Datagridview, я извлекаю свои табличные данные в Datagridview.
И я добавляю флажок столбец и столбец даты в один и тот же элемент.
Когда я поставлю флажок, то эта строка должна быть сохранена в базе данных.
Для столбца даты я использую элемент управления datetime picker в datagridview (не отдельно в форме).
Когда я отлаживаю его, все столбцы можно сохранить, но не дату.
Теперь я не могу сохранить свою строку в базе данных.
Что я уже пробовал:
Я использовал этот код для добавления datetime picker в datagridview.
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { DateTimePicker dtp = new DateTimePicker(); if (e.ColumnIndex == 1) { dtp = new DateTimePicker(); dataGridView1.Controls.Add(dtp); dtp.Format = DateTimePickerFormat.Short; Rectangle oRectangle = dataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true); dtp.Size = new Size(oRectangle.Width, oRectangle.Height); dtp.Location = new Point(oRectangle.X, oRectangle.Y); dtp.Visible = true; } }Этот код предназначен для кнопки Сохранить, чтобы сохранить эту отмеченную строку в базе данных.
private void Btnsaveandpass_Click(object sender, EventArgs e) { foreach (DataGridViewRow dr in dataGridView1.Rows) { bool checkboxselected = Convert.ToBoolean(dr.Cells["Column1"].Value); if (checkboxselected) { string insert = "insert into TBLDailyRecord values( @date ,@brandname, @generatedcode, @perpieceprice, @percentage, @soldprice)"; SqlCommand cmd = new SqlCommand(insert, con); cmd.Parameters.AddWithValue("@date",dr.Cells[1].Value ); // I am getting error here. cmd.Parameters.AddWithValue("@brandname", dr.Cells[2].Value); cmd.Parameters.AddWithValue("@generatedcode", dr.Cells[3].Value); cmd.Parameters.AddWithValue("@perpieceprice", dr.Cells[4].Value); cmd.Parameters.AddWithValue("@percentage", dr.Cells[5].Value); cmd.Parameters.AddWithValue("@soldprice", dr.Cells[6].Value); con.Open(); cmd.ExecuteNonQuery(); con.Close(); } label1.Text = "Selected rows save"; }
MadMyche
Ваш код имеет комментарии "Я получаю здесь ошибку"... в чем же ошибка
Member 14867079
параметризованного запроса '(@дата тип nvarchar(4000), @Марка компрессора тип nvarchar(12), @генерируется НВА' ожидает, что параметр '@дата'. который не поставляется
MadMyche
Это означает, что значение извлекается из dr.Cells[1].Value
является нулевой, в этом случае параметр не будет добавлен
Member 14867079
да, верно. Что же мне теперь делать? Мне нужна помощь
#realJSOP
Моя первая догадка заключается в том, чтобы выяснить, почему dr.Cells[1].Value
является null
, и исправить это. Я предполагаю, что значение ячейки равно a string
, и ваш SQL ожидает a DateTime
.
Кстати, когда вы вставляете данные в таблицу, вам действительно следует указать столбцы, для которых вы будете вставлять данные. Ваш оператор SQL не гарантированно будет работать так, как он написан в данный момент.
j snooze
Возможно, вы захотите взглянуть на эту ссылку, которая описывает, как сделать столбец datagridcolumn столбцом datetimepicker.
https://docs.microsoft.com/en-us/dotnet/framework/winforms/controls/how-to-host-controls-in-windows-forms-datagridview-cells?redirectedfrom=MSDN