В ADO.Net, как правило, не стоит пытаться повторно использовать один и тот же объект соединения во всем приложении из-за функции, называемой пул соединений.Разъем уже управляет этим для вас.Вместо этого действительно лучше просто создать новый экземпляр соединения для большинства запросов .Просто держите строку подключения под рукой и используйте ее повторно.Это особенно хорошо работает в сочетании с шаблоном IDisposable
/ Using
.
Кроме того, рекомендуется поместить ваши запросы в тот же класс или модуль, что и строка подключения, изолированная от остальной частиприложение, где каждый запрос является функцией, которая возвращает данные и (обычно) принимает аргумент, сообщающий ему, какие данные нужно найти.
Public Module SQL
'Making this private helps ensure you remember to put database activities here in this class.
Private ConnectionString As String = "DATABASE=(My actual DB);DATA SOURCE=(IP of the server);USER ID=(UserID);PASSWORD=(Password)"
'You could also design this function to return a DataTable object, if Iterator blocks aren't your thing
Public Iterator Function GetMSClients() As IEnumerable(Of String)
Dim Requete As String = "SELECT NomClient FROM MSClients"
Using cn As New MySqlConnection(ConnectionString), _
cmd As New MySqlCommand(Requete, cn)
cn.Open()
Using rdr As MySqlDataReader = cmd.ExecuteReader()
While rdr.Read()
Yield rdr.GetString("NomClient")
End While
End Using
End Using
End Function
End Module
Public Class NewDossier
Private Sub NewDossier_Load(sender As Object, e As EventArgs) Handles MyBase.Load
CBClient.Items.AddRange(SQL.GetMSClients().ToArray())
End Sub
End Class