Как заставить приложение vb работать с базой данных SQL с любого компьютера?

0

Большая часть моего опыта программирования основана на c, поэтому у меня нет четкого понимания того, как работает SQL (в частности, платформа mySQL). Приложение vb.net отлично работает на компьютере, на котором я это сделал. Однако, если я загружу его на другой компьютер, соединение mySQL не открывается. Из того, что я читал на других сообщениях StackOverflow, это ошибка строки подключения. Строка подключения выглядит примерно так:

"server = xxx.xxx.xxx.xxx; uid = username; pwd = password; database = db; timeout timeout = 300"

Опять же, для базового компьютера это нормально работает без каких-либо проблем. Это когда я запускаю программу с другого компьютера, когда у меня возникают проблемы. Нужно ли мне менять номер сервера? Я пытался это сделать, но программа все еще не работает. Есть ли еще одна область, которую мне нужно добавить в строку? Или мне нужно каким-то образом настроить параметры mySQL на каждом компьютере? Я хотел бы изменить программу таким образом, чтобы кто-нибудь мог ее использовать сразу после загрузки. Будет ли какой-либо из перечисленных выше методов работать или полностью другой?

Благодарю.

  • 1
    Частная сеть или "кто-нибудь", имеющий в виду кого-либо в мире? В моем опыте общедоступные базы данных обычно считаются плохой идеей (с точки зрения безопасности).
  • 0
    Теперь, когда вы упомянули об этом, я имел в виду «частную сеть», когда сказал «кто-нибудь». Спасибо что подметил это!
Показать ещё 4 комментария
Теги:

1 ответ

0

Это простой класс, который я использую для MySQL. Замените все в [скобке] вашими значениями. если он не работает, посмотрите на ваш брандмауэр, а также используйте MySQL WorkBench для создания пользователя/пароля/разрешения/схемы. Убедитесь, что вы можете подключиться к своей базе данных с помощью Workbench MySQL, тогда вы знаете, что все правильно настроено.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню