[Resolved] хранить строки из datagridview в таблицу mysql, вызывающую ошибку
Дорогой прикрепленный мой проект я хотел сохранить строки из datagridview в таблицу mysql, но я столкнулся с ошибкой в изображении любезно помогите мне.
http://ansicollege.net/vbcode/error.png[^]
Это ошибка, которую я получаю.
Ниже приведена строка кода, в которой я получаю ошибку
dgvcc = DirectCast(DataGridView1.Rows(i).Cells(1), DataGridViewComboBoxCell) .Parameters.AddWithValue("@product", dgvcc.Value)
Я хранения значений в выпадающем списке элемента управления datagridview, product_id тип данных в базе данных имеет тип int
Вот мой проект http://ansicollege.net/vbcode/TsoftPOS.zip[^]
Что я уже пробовал:
Public Sub CreateBill() Dim sql2 As String Try ConnDB() Dim dgvcc As New DataGridViewComboBoxCell For i As Integer = 0 To Me.DataGridView1.Rows.Count - 1 sqL = "INSERT INTO `dailysale`(`billno`,`customer_id`, `product_id`, `qty`, `price`, `total`, `description`) VALUES(@billno,@custid,@product, @qty, @price, @total, @desc)" cmd = New MySqlCommand(sqL, conn) 'datatype integer With cmd ' .Parameters.Clear() .Parameters.AddWithValue("@billno", txtbillno.Text) .Parameters.AddWithValue("@custid", txtCustomer.Tag) dgvcc = DirectCast(DataGridView1.Rows(i).Cells(1), DataGridViewComboBoxCell) .Parameters.AddWithValue("@product", dgvcc.Value) .Parameters.AddWithValue("@qty", Me.DataGridView1.Rows(i).Cells(2).Value) .Parameters.AddWithValue("@price", Me.DataGridView1.Rows(i).Cells(3).Value) .Parameters.AddWithValue("@total", Me.DataGridView1.Rows(i).Cells(4).Value) .Parameters.AddWithValue("@desc", Me.DataGridView1.Rows(i).Cells(5).Value) End With ' cmd = New MySqlCommand(sqL, conn) cmd.ExecuteNonQuery() Next sql2 = "INSERT INTO customer_payments(customer_id, billno, cdate, bill_amount, paid_amount, discount, ret_amount, balance) VALUES ('" & txtCustomer.Tag & "','" & txtbillno.Text & "','" & DateTimePicker1.Value & "','" & txtbill_amount.Text & "','" & txtpaid_amount.Text & "','" & txtdiscount.Text & "','" & txtret_amount.Text & "','" & txttotalbalance.Text & "')" cmd = New MySqlCommand(sqL, conn) cmd.ExecuteNonQuery() MsgBox("New Bill successfully created.", MsgBoxStyle.Information, "Create Bill") Catch ex As Exception MsgBox(ex.ToString) Finally cmd.Dispose() conn.Close() End Try
NotPolitcallyCorrect
И что же? Какую часть сообщения об ошибке вы не понимаете? Независимо от того, как сильно вы пытаетесь избежать изучения новых вещей, вы просто должны научиться использовать отладчик для отладки вашего кода.
CHill60
Почему вы правильно используете параметризованный запрос для sql
а затем подвергните свою базу данных SQL-инъекции с помощью sql2
?
Ошибка вполне понятна - для одного из значений I
в нем ничего нет. DataGridView1.Rows(i).Cells(1)
Это, наверное, последний ряд - у вас есть DataGridView1.AllowUserToAddRows
установить значение false?