如何使vb应用程序与任何计算机上的sql数据库一起工作?

nsc4cvqm  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(254)

我的大部分编程经验都是基于c的,所以我对sql(特别是mysql平台)的工作原理没有最清楚的了解。我的vb.net应用程序在我的电脑上运行得非常好。但是,如果我将其下载到另一台计算机上,mysql连接将无法打开。从我在其他stackoverflow帖子上读到的内容来看,这是连接字符串的错误。我的连接字符串如下所示:
“服务器=...;uid=用户名;pwd=密码;数据库=db;默认命令超时=300“
同样,对于基础计算机来说,它工作正常,没有任何问题。当我在另一台电脑上运行程序时,我遇到了麻烦。我需要更改服务器号码吗?我试过了,但程序还是不起作用。还有一个字段需要添加到字符串中吗?或者我需要在每台计算机上以某种方式配置mysql设置吗?我想改变程序的方式,让任何人都可以使用它立即下载。上面列出的任何一种方法有效吗,或者完全不同的方法有效吗?
谢谢。

ckx4rj1h

ckx4rj1h1#

这是我在mysql中使用的一个简单类。用你的值替换[括号]中的所有内容。如果不起作用,请查看防火墙,并使用mysql workbench创建user/password/permission/schema。确保你能用mysql workbench连接到你的数据库,然后你就知道你的一切都设置正确了。

Imports MySql.Data.MySqlClient

Public Class mysql

    'Connection string for mysql
    Public SQLSource As String = "Server=[x.x.x.x];userid=[yourusername];password=[yourpassword];database=[defaultdatabaseifany];"

    'database connection classes

    Private DBcon As New MySqlConnection
    Private SQLcmd As MySqlCommand
    Public DBDA As New MySqlDataAdapter
    Public DBDT As New DataTable
    ' parameters
    Public Params As New List(Of MySqlParameter)

    ' some stats
    Public RecordCount As Integer
    Public Exception As String

    Function ExecScalar(SQLQuery As String) As Long
        Dim theID As Long
        DBcon.ConnectionString = SQLSource
        Try
            DBcon.Open()
            SQLcmd = New MySqlCommand(SQLQuery, DBcon)
            'loads params into the query
            Params.ForEach(Sub(p) SQLcmd.Parameters.AddWithValue(p.ParameterName, p.Value))

            'or like this is also good
            'For Each p As MySqlParameter In Params
            ' SQLcmd.Parameters.AddWithValue(p.ParameterName, p.Value)
            ' Next
            ' clears params
            Params.Clear()
            'return the Id of the last insert or result of other query
            theID = Convert.ToInt32(SQLcmd.ExecuteScalar())
            DBcon.Close()

        Catch ex As MySqlException
            Exception = ex.Message
            theID = -1
        Finally
            DBcon.Dispose()
        End Try
        Return theID
    End Function

    Sub ExecQuery(SQLQuery As String)

        DBcon.ConnectionString = SQLSource
        Try
            DBcon.Open()
            SQLcmd = New MySqlCommand(SQLQuery, DBcon)
            'loads params into the query
            Params.ForEach(Sub(p) SQLcmd.Parameters.AddWithValue(p.ParameterName, p.Value))

            'or like this is also good
            'For Each p As MySqlParameter In Params
            ' SQLcmd.Parameters.AddWithValue(p.ParameterName, p.Value)
            ' Next
            ' clears params

            Params.Clear()
            DBDA.SelectCommand = SQLcmd
            DBDA.Update(DBDT)
            DBDA.Fill(DBDT)

            DBcon.Close()
        Catch ex As MySqlException
            Exception = ex.Message
        Finally
            DBcon.Dispose()
        End Try
    End Sub
    ' add parameters to the list
    Public Sub AddParam(Name As String, Value As Object)
        Dim NewParam As New MySqlParameter(Name, Value)
        Params.Add(NewParam)
    End Sub
End Class

相关问题