我在写一本书 VB.Net
项目(第一次,我以前在 VBA
)我似乎很难与mariadb/mysql数据库建立连接。
我想得到一列的所有行,将其用作名为 CBClient
以某种形式
这是我目前的代码:
头等舱: ClassSQL
```
Imports MySql.Data.MySqlClient
Imports MySql.Data.Types
Public Class ClassSQL
Public Shared ConfigSQL As String =
"DATABASE=(My actual DB);DATA SOURCE=(IP of the server);USER ID=(UserID);PASSWORD=(Password)"
Public Shared ConnectDB As New MySqlConnection(ConfigSQL)
End Class
以及窗体类:
Imports MySql.Data.MySqlClient
Public Class NewDossier
Private Sub NewDossier_Load(sender As Object, e As EventArgs) Handles MyBase.Load
GetCBClient()
End Sub
Sub GetCBClient()
ClassSQL.ConnectDB.Open()
Dim Requete As String = "SELECT NomClient FROM MSClients"
Dim Query As New MySqlCommand(Requete, ClassSQL.ConnectDB)
Dim rs As MySqlDataReader = Query.ExecuteReader
Do While rs.Read
CBClient.Items.Add(rs.GetString("NomClient"))
Loop
ClassSQL.ConnectDB.Close()
End Sub
End Class
在 `ClassSQL.ConnectDB.Open()` 在form类中,我有一个例外:
invalidoperationexception无效操作异常 : 连接必须有效且打开
我的连接有什么问题吗?还是我做错了什么?
有没有办法指定端口?
1条答案
按热度按时间jq6vz3qz1#
在ado.net中,尝试在整个应用程序中重用同一个连接对象通常不是一个好主意,因为有一个称为连接池的特性。连接器已在为您管理此项。相反,最好只是为大多数查询创建一个新的连接示例。只要把连接字符串放在手边,然后重新使用它。这与
IDisposable
/Using
图案。此外,最好将查询与连接字符串放在同一类或模块中,与应用程序的其余部分隔离开来,其中每个查询都是一个返回数据的函数,并且(通常)接受一个参数,告诉它要查找哪些数据。