mysqlexception был необработанным – уже открыт DataReader, связанный с этим соединением, который должен быть закрыт первым

Поэтому я пытаюсь использовать форму для обновления моей базы данных на xampp. Но когда я пытаюсь обновить, я получаю ошибку в заголовке в этой части: reader = objcommand.ExecuteReader() Вся помощь очень ценится.

Вот код:

  Imports MySql.Data Imports MySql.Data.MySqlClient Imports System.Drawing.Printing Imports System Imports System.Windows.Forms Public Class frmClientDetails Dim form_type As Form Dim user_table As String Dim objconnection As New MySqlConnection("Server=localhost;database=ba-solutions;user id=root;password=") Dim sqlstring As String Private Sub frmClientDetails_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load DGVClient.Columns.Clear() Dim dt As New DataTable objdataadapter.SelectCommand = New MySqlCommand() objdataadapter.SelectCommand.Connection = objconnection objdataadapter.SelectCommand.CommandType = CommandType.Text objdataadapter.SelectCommand.CommandText = "SELECT * FROM Client_Details" objdataadapter.Fill(dt) rowposition = 0 DGVClient.DataSource = dt End Sub Private Sub btnBack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBack.Click frmMainMenu.Show() Me.Hide() End Sub Private Sub btnClearAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClearAll.Click txtCompanyName.Clear() cbxCompanyType.Items.Clear() txtVAT.Clear() txtPAYE.Clear() txtAddressLine.Clear() txtCity.Clear() txtPostcode.Clear() txtEmail.Clear() txtPhoneNumber.Clear() End Sub Private Sub btnSubmit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSubmit.Click If Len(txtCompanyName.Text) < 1 Then MsgBox("Enter a Company Name") Return End If If Len(cbxCompanyType.Text) < 1 Then MsgBox("Enter a Company Type") Return End If If Len(txtVAT.Text) <> 9 Then MsgBox("The VAT Registration Number must be 9 numbers") Return End If If Len(txtPAYE.Text) <> 8 Then MsgBox("The PAYE and Tax Reference must be 8 characters") Return End If If Len(txtAddressLine.Text) < 1 Then MsgBox("Enter a First Line of Address") Return End If If Len(txtCity.Text) < 1 Then MsgBox("Enter a City Name") Return End If If Len(txtPostcode.Text) < 1 Then MsgBox("Enter a Postcode") Return End If If Len(txtEmail.Text) < 1 Then MsgBox("Enter an Email Address") Return End If If Len(txtPhoneNumber.Text) <> 11 Then MsgBox("The Phone Number must be 11 numbers ") Return End If Try objconnection.Open() Catch ex As Exception MsgBox("Error connecting to database", MsgBoxStyle.Information, "Connection Failed") End Try sqlstring = "Select * FROM client_details" Dim currentrecord As Integer = DGVClient.CurrentCellAddress.Y objconnection.Close() objconnection.Open() sqlstring = "Insert into `Client_Details` (`CompanyName` , `CompanyType` , `VATRegistrationNumber , `PAYEandTaxReference` , `AddressLine1` , `City` , `Postcode` , `Email` , `PhoneNumber') Values ('" & txtCompanyName.Text & "','" & cbxCompanyType.Text & "' , '" & txtVAT.Text & "','" & txtPAYE.Text & "' , '" & txtAddressLine.Text & "' , '" & txtCity.Text & "' , '" & txtPostcode.Text & "' , '" & txtEmail.Text & "' , '" & txtPhoneNumber.Text & "')" MsgBox("updated") objcommand.CommandText = sqlstring reader = objcommand.ExecuteReader() MsgBox("update") End Sub Public Sub count_records() Dim reccount As Integer reccount = DGVClient.Rows.Count = 1 End Sub End Class 

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

Переключитесь на использование параметризованных запросов . Это поможет вам. Количество параметров будет соответствовать количеству столбцов в вашей таблице в порядке. Создайте объекты ADO по мере необходимости и закройте их в конце подпрограмм Sub.

 Insert Into [table name] Values(n1, n2, etc...) 

Учебник SQL