使用VB.NET 2010连接到远程MySQL数据库

时间:2012-12-10 09:15:35

标签: mysql vb.net

我的连接字符串如下。

conn.ConnectionString = "Server=192.248.***.***; Port=3036; User id=admin; password=***; Database=abc; Connect Timeout=60;"

但它返回错误“连接到数据库时出错:无法连接到任何指定的MySQL主机。”

但我可以使用PHPMyAdmin登录。

//192.248.***.***/phpmyadmin

我也可以使用以下方式登录本地MySQL数据库:

    conn.ConnectionString = "server=" & "localhost" & ";" & "user id=" & "admin" & ";" & "password=" & "" & ";" & "database=abc"

此代码有什么问题。我想连接到远程数据库,因为它是系统的要求。请帮忙。

更新 在即时窗口中显示:

    PassbookPrinter.vshost.exe Error: 0 : Unable to connect to any of the specified MySQL hosts.
A first chance exception of type 'MySql.Data.MySqlClient.MySqlException' occurred in MySql.Data.dll

5 个答案:

答案 0 :(得分:3)

使用VB.Net连接到远程MySQL数据库

将vb.net连接到远程MySql数据库;无论您使用什么VB.Net版本,只需执行以下步骤。

1)从网址(https://dev.mysql.com/downloads/connector/net/

下载Mysql Connector / Net

2)安装连接器;默认情况下,连接器将安装在我已安装的版本的路径(C:\ Program Files \ MySQL \ Connector Net 6.9.6)中。

3)打开VB.Net IDE并启动新项目。

4)添加" Mysql.Data.dll"作为对项目的引用,您可以在路径中找到它(C:\ Program Files \ MySQL \ Connector Net 6.9.6 \ Assemblies \ v4.5);

5)准备好连接表格,如图所示; enter image description here

6)创建名为" Database"的类。并写下以下代码。

数据库类代码

导入MySql.Data.MySqlClient

公共类数据库

Private _connection As New MySqlConnection
Private _errormessge As String
Private _servername As String
Private _databasename As String
Private _userid As String
Private _password As String

Public WriteOnly Property ServerName() As String
    Set(ByVal value As String)
        _servername = value
    End Set
End Property

Public WriteOnly Property DatabaseName() As String
    Set(ByVal value As String)
        _databasename = value
    End Set
End Property

Public WriteOnly Property UserID() As String
    Set(ByVal value As String)
        _userid = value
    End Set
End Property

Public WriteOnly Property Password() As String
    Set(ByVal value As String)
        _password = value
    End Set
End Property

Public ReadOnly Property ErrorMessage() As String
    Get
        Return _errormessge
    End Get
End Property

Public Function Connection() As Boolean
    Try
        _connection.ConnectionString = "Server=" & _servername & ";Port=3306;Database=" & _databasename & ";User ID=" & _userid & ";Password=" & _password & ""
        _connection.Open()
        If _connection.State = ConnectionState.Open Then
            _connection.Close()
            Return True
        End If
    Catch ex As Exception
        _errormessge = ex.Message
        Return False
    End Try
End Function

结束班

表单类代码

Public Class Frm_Main     Private Sub btn_connect_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)处理btn_connect.Click

'对象声明和实例化

将数据视为新数据库

    With data
        'Assing the object property values
        .ServerName = txt_server.Text
        .DatabaseName = txt_database.Text
        .UserID = txt_uid.Text
        .Password = txt_pwd.Text

        'Connection testing
        If .Connection Then
            MessageBox.Show("Database Conneted.")
        Else
            MessageBox.Show(.ErrorMessage)
        End If
    End With
End Sub

Private Sub btn_exit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_exit.Click
    Close()
End Sub

结束班

7)运行项目并尝试连接;如果连接成功那么你的运气;如果连接不成功,出现以下错误消息,请不要只是继续阅读; enter image description here

8)注意@之后的错误消息的ip地址(这就是你的ip)并将其添加到你的域cpanel"远程mysql访问"下面的图片说明了远程mysql访问的样子(它们可能与颜色相同);不要忘记按"添加主机"按钮。对于静态IP的用户,此设置可以每天使用。 enter image description here

在上述步骤之后看到成功的信息;

enter image description here

但是如果错误消息仍然存在,请尝试将密码文本留空并在远程数据库中没有密码时再次连接;如果错误再次出现,除了YES改为NO,那么你必须检查你是否在DHCP中;

9)如果你在DHCP中这意味着ip正在每个新的互联网连接中发生变化。如果你使用调制解调器可能是你的DHCP。如果您在动态ips中然后检查ip的4个块中的变化。如果第一个ip在第一个连接中是197.250.3.201而下一个ip是197.250.60.70而下一个ip是197.250.80.24;您必须在cpanel访问主机中添加197.250。%才能使您的连接保持稳定。 enter image description here

10)注意:百分比符号(通配符)流向ip地址的左侧,安全门打开的越多。如有新的错误,请与您的域名提供商联系,域中可能存在其他一些安全问题。谢谢!

答案 1 :(得分:1)

试试这个,它会起作用

con.ConnectionString ="Persist Security Info=False;datasource=site.com;port=3306;username=username;password=password;database=database name"

您必须添加

  

坚持安全

你的代码中的

。访问您的站点服务器的mysql数据库。去cpanel>远程MySQL,并添加您的IP地址

查看此图片>>> https://www.dropbox.com/s/ytsz57spanwdpkz/cpanel.PNG

现在享受:p

答案 2 :(得分:0)

MySQL的默认端口是3306.如果你可以使用默认设置从phpmyadmin连接它听起来像一个错字,你应该有:

conn.ConnectionString = "Server=192.248.***.***; Port=3306; User id=admin; password=***; Database=abc; Connect Timeout=60;"

默认情况下,禁用远程访问MySQL服务器。例如,如果您在Debian Linux发行版上运行MySQL,则可能需要采取以下其他步骤以允许从另一台计算机进行访问:

http://www.debianhelp.co.uk/remotemysql.htm

对于Windows主机,以下内容可能非常有用:

http://techminded.net/blog/allow-remote-connections-for-mysql-on-windows.html

答案 3 :(得分:0)

以前我遇到过同样的问题,我和在不同的服务器上运行的情况一样。

尝试ping运行应用程序的服务器,看看是否可以连接。这就是我发现并需要改变防火墙的方法。

答案 4 :(得分:-1)

尝试在mysql的.ini配置上将端口更改为3307 然后在mysql的.ini配置上绑定地址=服务器的ip或主机名