Большая часть моего опыта программирования основана на c, поэтому у меня нет четкого понимания того, как работает SQL (в частности, платформа mySQL). Приложение vb.net отлично работает на компьютере, на котором я это сделал. Однако, если я загружу его на другой компьютер, соединение mySQL не открывается. Из того, что я читал на других сообщениях StackOverflow, это ошибка строки подключения. Строка подключения выглядит примерно так:
"server = xxx.xxx.xxx.xxx; uid = username; pwd = password; database = db; timeout timeout = 300"
Опять же, для базового компьютера это нормально работает без каких-либо проблем. Это когда я запускаю программу с другого компьютера, когда у меня возникают проблемы. Нужно ли мне менять номер сервера? Я пытался это сделать, но программа все еще не работает. Есть ли еще одна область, которую мне нужно добавить в строку? Или мне нужно каким-то образом настроить параметры mySQL на каждом компьютере? Я хотел бы изменить программу таким образом, чтобы кто-нибудь мог ее использовать сразу после загрузки. Будет ли какой-либо из перечисленных выше методов работать или полностью другой?
Благодарю.
Это простой класс, который я использую для 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