envals Ответов: 1

Как вставить элемент в базу данных 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-это просто инструмент отображения, а не хранилище данных.

1 Ответов

Рейтинг:
1

CHill60

Во - первых-избегайте размещения ссылок на изображения, если они не являются абсолютно необходимый. Вы все равно показали данные в datagridview в своем посте. Многие работодатели блокируют Имгур, так что я все равно его не вижу.

Во-вторых, это не обучающий сайт, так что вам нужно будет, по крайней мере, сделать попытку для себя.

Однако... посмотрите в правом нижнем углу этой страницы ... в частности, посмотрите на список "связанные вопросы". Это список вопросов, похожих на ваши собственные.

Если этот пост из этого списка вам не поможет (он должен) ... Вставка в базу данных SQL из datagridview[^] ... затем попробуйте следующий вниз и т. д.

Если у вас все еще есть проблемы, когда вы написали какой-то код для этого, то, пожалуйста, возвращайтесь с последующими вопросами