Вставка данных из DataGridView в базу данных - PullRequest
0 голосов
/ 20 марта 2012

У меня есть небольшой DataGridView, который позволяет пользователю вводить данные.

Ths is the grid

И я пытаюсь этот код ввести данные из DataGridView в базу данных.

    strQry = "INSERT INTO Emp_Fam_Details (empID, famName, famAge, famRelation, famOccup)" _
            & "VALUES (@ID, @Name, @Age, @Rel, @Occ)"
    Dim adapFam As New SqlDataAdapter
    adapFam.InsertCommand = New SqlCommand(strQry, sqlcon)

    For i As Integer = 0 To grdFamily.Rows.Count - 1
        adapFam.InsertCommand.Parameters.AddWithValue("@ID", txtEmpID.Text.Trim)
        adapFam.InsertCommand.Parameters.AddWithValue("@Name", grdFamily.Columns(0))
        adapFam.InsertCommand.Parameters.AddWithValue("@Age", grdFamily.Columns(1))
        adapFam.InsertCommand.Parameters.AddWithValue("@Rel", grdFamily.Columns(2))
        adapFam.InsertCommand.Parameters.AddWithValue("@Occ", grdFamily.Columns(3))

        result2 = adapFam.InsertCommand.ExecuteNonQuery()
    Next

Когда я запускаю это, я сталкиваюсь с этой ошибкой.

This is the error

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

Может кто-нибудь показать мне, как это сделать?

Спасибо всем.

1 Ответ

1 голос
/ 20 марта 2012

Невозможно сопоставить столбцы с данными .Вам нужно добавить данные ячейки строки индекса этого столбца

Это неверно grdFamily.Columns(0)

Назначение параметра в цикле for должно быть исправлено следующим образом

ПРИМЕЧАНИЕ Пожалуйста, измените тип данных согласно вашей таблице.

adapFam.InsertCommand.Parameters.Add("@ID", SqlDbType.Int)
adapFam.InsertCommand.Parameters.Add("@Name", SqlDbType.VarChar)
adapFam.InsertCommand.Parameters.Add("@Age", SqlDbType.VarChar)
adapFam.InsertCommand.Parameters.Add("@Rel", SqlDbType.VarChar)
adapFam.InsertCommand.Parameters.Add("@Occ", SqlDbType.VarChar)

For i As Integer = 0 To grdFamily.Rows.Count - 1
  adapFam.InsertCommand.Parameters[0].Value = Convert.ToInt32(txtEmpID.Text.Trim)
  adapFam.InsertCommand.Parameters[1].Value = grdFamily.Rows[i].Cells[0].Value
  adapFam.InsertCommand.Parameters[2].Value = grdFamily.Rows[i].Cells[1].Value
  adapFam.InsertCommand.Parameters[3].Value = grdFamily.Rows[i].Cells[2].Value
  adapFam.InsertCommand.Parameters[4].Value = grdFamily.Rows[i].Cells[3].Value

    result2 = adapFam.InsertCommand.ExecuteNonQuery()
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...