Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更新VB.NET中的MySQL字段时出错_.net_Mysql_Vb.net - Fatal编程技术网

更新VB.NET中的MySQL字段时出错

更新VB.NET中的MySQL字段时出错,.net,mysql,vb.net,.net,Mysql,Vb.net,我试图用VB.NET制作一个非常简单的程序,连接到MySQL数据库。我的程序只有一个窗体和一个标签。我将MySQL数据库设置为有一个表和一个字段(a) VARCHAR)称为“Tab1”。我使用PHPMyAdmin将值“CLOSED”手动插入到Tab1字段中。我希望我的程序将字段的值更改为打开/关闭,并且我还希望表单上的标签文本 单击时也要更改 到目前为止,我已经在我的项目中添加了MySQL.data引用,并添加了: Imports System Imports System.Data Impor

我试图用VB.NET制作一个非常简单的程序,连接到MySQL数据库。我的程序只有一个窗体和一个标签。我将MySQL数据库设置为有一个表和一个字段(a)

VARCHAR)称为“Tab1”。我使用PHPMyAdmin将值“CLOSED”手动插入到Tab1字段中。我希望我的程序将字段的值更改为打开/关闭,并且我还希望表单上的标签文本

单击时也要更改

到目前为止,我已经在我的项目中添加了MySQL.data引用,并添加了:

Imports System
Imports System.Data
Imports MySql.Data.MySqlClient
总声明

我还声明了一个包含MySQL连接的全局变量:

Public Class Form1

    Dim conn As New MySqlConnection
下面是我连接到MySQL的函数:

Private Function Connect(ByVal server As String, ByRef user As String, ByRef password As String, ByRef database As String)
        ' Connection string with MySQL Info
        conn.ConnectionString = "server=" + server + ";" _
        & "user id=" + user + ";" _
        & "password=" + password + ";" _
        & "database=" + database + ";"
        Try
            conn.Open()
            Return True
        Catch ex As MySqlException
            Return MsgBox(ex.Message)
        End Try
    End Function
我让程序在Form_Load上连接到MySQL,如下所示:

Connect("db4free.net", "boomun", "*******", "boomdb")
连接很好,但这里是我遇到麻烦的地方。。。。单击Label1时,我希望字段从关闭变为打开。它确实会在第一次单击时更改为打开,但我收到一个mysql错误Msgbox,它说“已经有一个与此连接相关联的打开的DataReader,必须先关闭它”。。。。如何关闭数据读取器

以下是我到目前为止的情况:

Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click
        Dim myCommand As New MySqlCommand
        Dim myAdapter As New MySqlDataAdapter
        Dim myData As MySqlDataReader
        Dim SQL As String

        SQL = "SELECT * FROM `boomtable` WHERE `Tab1` = 'CLOSED'"

        myCommand.Connection = conn
        myCommand.CommandText = SQL
        myAdapter.SelectCommand = myCommand

        Try
            myData = myCommand.ExecuteReader()
            myData.Read()
            If myData.HasRows = 0 Then
                Label1.Text = "CLOSED"
                SQL = "UPDATE boomtable SET Tab1 = 'CLOSED' WHERE Tab1 = 'OPEN'"
                myCommand.CommandText = SQL
                myCommand.ExecuteNonQuery()
                myData.Close()

            Else
                Label1.Text = "OPEN"
                SQL = "UPDATE boomtable SET Tab1 = 'OPEN' WHERE Tab1 = 'CLOSED'"
                myCommand.CommandText = SQL
                myCommand.ExecuteNonQuery()
                myData.Close()

            End If
        Catch ex As MySqlException
            MsgBox(ex.Message)
        End Try

    End Sub
我有
myData.close()
,但我仍然会遇到那个错误!有什么好处

以下是项目的全部代码:

Imports System
Imports System.Data
Imports MySql.Data.MySqlClient

Public Class Form1

    Dim conn As New MySqlConnection

    Private Function Connect(ByVal server As String, ByRef user As String, ByRef password As String, ByRef database As String)
        ' Connection string with MySQL Info
        conn.ConnectionString = "server=" + server + ";" _
        & "user id=" + user + ";" _
        & "password=" + password + ";" _
        & "database=" + database + ";"
        Try
            conn.Open()
            Return True
        Catch ex As MySqlException
            Return MsgBox(ex.Message)
        End Try
    End Function

    Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click
        Dim myCommand As New MySqlCommand
        Dim myAdapter As New MySqlDataAdapter
        Dim myData As MySqlDataReader
        Dim SQL As String

        SQL = "SELECT * FROM `boomtable` WHERE `Tab1` = 'CLOSED'"

        myCommand.Connection = conn
        myCommand.CommandText = SQL
        myAdapter.SelectCommand = myCommand

        Try
            myData = myCommand.ExecuteReader()
            myData.Read()
            If myData.HasRows = 0 Then
                Label1.Text = "CLOSED"
                SQL = "UPDATE boomtable SET Tab1 = 'CLOSED' WHERE Tab1 = 'OPEN'"
                myCommand.CommandText = SQL
                myCommand.ExecuteNonQuery()
                myData.Close()

            Else
                Label1.Text = "OPEN"
                SQL = "UPDATE boomtable SET Tab1 = 'OPEN' WHERE Tab1 = 'CLOSED'"
                myCommand.CommandText = SQL
                myCommand.ExecuteNonQuery()
                myData.Close()

            End If
        Catch ex As MySqlException
            MsgBox(ex.Message)
        End Try

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Connect("db4free.net", "boomun", "boom123", "boomdb")
    End Sub

End Class

在您的
中尝试…捕获
-块中最后放置一个
-

您正在尝试重用已打开的连接对象。 因此,您需要关闭连接,然后在重新运行下一个查询时重新打开

Try

Catch ex as Exception
    'catch Exception'
Finally
    conn.Close()
End Try
**编辑制作**


读取数据后需要断开连接,然后重新连接以进行更新。

VB.NET的完整建议:首先,可以直接为变量赋值:
Dim myTest As String=“TestString”
。第二,打开
选项Strict/Infer/Explicit
。第三,转储丑陋的
Microsoft.VisualBasic
-VB6遗留命名空间。第四,正确调用,
MySqlDataReader.HasRows
是一个
Boolean
属性。我看不出您所做的编辑在我看来是一样的?我试过了,但还是出现了同样的错误。这是编辑“你需要在读取数据后断开连接,然后重新连接以进行更新。”