Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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/1/ssh/2.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的连接尝试失败;尝试从Mysql表读取数据时出错。Insert into语句正在工作_Mysql_Database_Vb.net - Fatal编程技术网

VB.Net与Mysql的连接尝试失败;尝试从Mysql表读取数据时出错。Insert into语句正在工作

VB.Net与Mysql的连接尝试失败;尝试从Mysql表读取数据时出错。Insert into语句正在工作,mysql,database,vb.net,Mysql,Database,Vb.net,我是Mysql数据库的新手。我为本地服务器成功创建并连接了一个数据库。但在尝试从表中读取数据时出现“连接尝试失败…”错误。“插入…”语句正在运行。我搜索了整个网站的原因。不是成功。任何人都可以帮忙。提前感谢… 完整的错误描述: 由于连接方在一段时间后没有正确响应,连接尝试失败;或者由于连接的主机未能响应,建立的连接失败 相关代码如下: 以下功能正在工作并已成功连接 Public Function Connect() As Boolean Dim Status As Boolean

我是Mysql数据库的新手。我为本地服务器成功创建并连接了一个数据库。但在尝试从表中读取数据时出现“连接尝试失败…”错误。“插入…”语句正在运行。我搜索了整个网站的原因。不是成功。任何人都可以帮忙。提前感谢…
完整的错误描述:
由于连接方在一段时间后没有正确响应,连接尝试失败;或者由于连接的主机未能响应,建立的连接失败

相关代码如下:
以下功能正在工作并已成功连接

Public Function Connect() As Boolean
        Dim Status As Boolean
        Try
            conn.ConnectionString = "Server=" & Server & ";Port=3306;Database=" & DBName & ";User ID=" & UID & ";Password=" & Pwd & ";CharSet=utf8;"
            conn.Open()
            cmd.Connection = conn
            If conn.State = ConnectionState.Open Then
                Status = True
            End If
        Catch ex As Exception
            ErrorMsg = ex.Message
            Status = False
        End Try
        Return Status
    End Function
下面的函数返回错误

    Public Function getData(ByVal SQLStr As String) As MySql.Data.MySqlClient.MySqlDataReader
        Dim tmpDR As MySql.Data.MySqlClient.MySqlDataReader
        If conn.State = ConnectionState.Open Then
            cmd.CommandText = SQLStr
            tmpDR = cmd.ExecuteReader()
        Else
            MsgBox("Database not connected...", MsgBoxStyle.Exclamation, "Connection Error")
            tmpDR = Nothing
        End If
        getData = tmpDR
    End Function

去掉任何类级数据库对象。完全去掉函数Connect。如果你开始写作

If conn.State = ConnectionState.Open Then
你应该知道你做错了

不要把数据阅读器传来传去。连接必须保持打开状态,才能正常工作。加载一个数据表,并在Using块处理完连接和命令后传递该数据表

如果要向用户显示消息框,请让异常冒泡到用户界面代码

Private ConStr As String = "Server=" & Server & ";Port=3306;Database=" & DBName & ";User ID=" & UID & ";Password=" & Pwd & ";CharSet=utf8;"

Public Function getData(ByVal SQLStr As String) As DataTable
    Dim dt As New DataTable
    Using conn As New MySqlConnection(ConStr),
            cmd As New MySqlCommand(SQLStr)
        conn.Open
        dt.Load(cmd.ExecuteReader)
    End Using
    Return dt 
End Function

如您所见,创建连接只需要一条简单的线。连接是宝贵的资源,只能在.Execute。。。并尽快关闭。

错误消息似乎表明您的命令可能超时。从调用
ExecuteReader
到引发异常需要多长时间?SQL代码有多复杂?您希望检索多少数据?在getData()方法中,您在哪里初始化连接?你们公司的经营范围是什么?猜猜它是全球性的?当您直接针对DB运行sql时,sql是否会像预期的那样执行?@jmcillhinney,大约36秒的sql代码非常简单,“Select LogDesc from log”;此外,“Insert into”语句有效。@Hursey,getData是我的数据库类的一个方法。connect是初始化连接的另一种方法。它有效,插入方法也有效。所有这些都在同一个类中。不要对数据库对象执行此操作。需要关闭和释放连接和命令。将它们保留在使用它们的方法的本地。然后使用…结束使用块将其包含在
中。谢谢您的建议。正如你所说,我更改了代码。但问题依然存在。插入到语句works中。但是Select语句不能准确显示Select字符串的外观。添加
Debug.Print(SQLStr)
作为我函数的第一行,让我知道即时窗口中显示的内容。从日志中选择LogDesc;您有一个用于日志的Insert语句,这是有效的。是吗?是的,很有效。在这里,我想到了一些连接错误。但我不能确定。我读到的一篇帖子,将“使用过程主体”设置为False。它也改变了。但结果是一样的。