Как вставить элемент в базу данных SQL после его прочтения из Excel
Как импортировать данные из моего datagridview, которые были импортированы из excel, в мою базу данных SQL?
[Изображение моего datagridview]
My datagridview: Date | EmployeeID1 | EmployeeID2 | EmployeeID3 --------------------------------------------------------------------- 18/1/2018 1 2 3 19/1/2018 2 3 1 20/1/2018 1 2 3 How I want it to be like in my SQL Database: DutyID | Date | EmployeeID | Shift ------------------------------------------------------------------------------------ 1 18/1/2018 EmployeeID1 1 2 18/1/2018 EmployeeID2 2 3 18/1/2018 EmployeeID3 3 4 19/1/2018 EmployeeID1 2 5 19/1/2018 EmployeeID2 3 6 19/1/2018 EmployeeID3 1 7 20/1/2018 EmployeeID1 1 8 20/1/2018 EmployeeID2 2 9 20/1/2018 EmployeeID3 3
Что я уже пробовал:
private void btnInsert_Click(object sender, EventArgs e) { for (int r = 1; r < dataGridView1.Rows.Count; r++) { for (int c = 1; c < dataGridView1.Columns.Count; c++) { try { SqlConnection con = new SqlConnection(constring); SqlCommand query = new SqlCommand("INSERT into RosterTest (EmployeeID, Date, ShiftType) Values (@EmployeeID,@Date,@ShiftType", con); query.Parameters.Add("@EmployeeID", SqlDbType.Int).Value = dataGridView1.Columns[c].HeaderText; query.Parameters.Add("@Date", SqlDbType.Date).Value = dataGridView1.Rows[r].Cells; con.Open(); query.ExecuteNonQuery(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } }
Я получаю ошибку "не удалось преобразовать значение параметра из DataGridViewCellCollection в DateTime
F-ES Sitecore
Всегда давайте строку, на которой возникает ошибка. Если это тот самый;
запрос.Parameters.Add("@Date", SqlDbType.Date).Значение = dataGridView1.Ряды[Р].Клетки;
"Ячейки" - это набор ячеек в виде сетки. Это может быть 5 ячеек с цифрами, текстом, логическими значениями и т. д. Откуда .net знает, как преобразовать коллекцию разрозненных объектов в одно значение даты?
1, "Привет", False, null
Что такое вышеприведенная дата?
Вам нужно сослаться на одну конкретную ячейку и в зависимости от того, какой тип данных находится в этой ячейке, сделать все необходимое, чтобы преобразовать ее в действительную дату. Однако ваша стратегия получения данных из gridview неверна, вы должны вставлять данные в SQL, когда читаете их из файла Excel, gridview-это просто инструмент отображения, а не хранилище данных.