代碼如下:
Imports MySql.Data.MySqlClient
Public Class Form1
Dim conStr As String = "server=" & "localhost" & ";uid=" & "root" & ";pwd=" & "******" & ";database= customs;pooling=false"
Dim sqlStr As String
Dim objConn As New MySqlConnection(conStr)
Dim objAdp As New MySqlDataAdapter
Dim objDataSet As New DataSet
' 測驗連接
Function Connect_DB(ByVal constr As String)
'objConn = New MySqlConnection(constr)
Try
objConn.Open()
TextBox1.Text = "資料庫連接成功!"
Catch ex As Exception
TextBox1.Text = ex.Message
MsgBox(ex.Message & vbCrLf & "資料庫連接失敗!")
Finally
objConn.Close()
End Try
End Function
' 執行查詢
Public Function Query_DB(ByVal sql As String) As DataTable
Dim objAdp = New MySqlDataAdapter(sql, objConn)
Try
objAdp.Fill(objDataSet, "QueryData")
DataGridView1.DataSource = objDataSet.Tables("QueryData")
'Return dTable
Catch ex As Exception
TextBox1.Text = sql + vbCrLf + ex.Message
Return Nothing
Finally
objConn.Close()
End Try
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Connect_DB(conStr)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim sql = "select * from printing_data"
Query_DB(sql)
End Sub
End Class
運行,點擊Button1連接資料庫,報錯:The given key was not present in the dictionary.
在conStr后加上charset=utf8,如下:Dim conStr As String = "server=" & "localhost" & ";uid=" & "root" & ";pwd=" & "222310" & ";database= customs;pooling=false;charset=utf8"
運行,連接資料庫成功。
點擊Button2查詢資料,運行到objAdp.Fill(objDataSet, "QueryData")時又報錯:The given key was not present in the dictionary.
即時視窗提示:Exception thrown: 'System.Collections.Generic.KeyNotFoundException' in mscorlib.dll
怎么搞也搞不好了,請大神指點

另外,MySQL資料庫設定的charset設定為utf8mp4,有嘗試過將其改為utf8,無效。
其他配置:.NET Framework 4.7.2 SDK MySQL Connector Net 8.0.19 都是新安裝的
uj5u.com熱心網友回復:
Dim connectionString As String="Server = localhost; Database = {#myDB}; Uid = root; Pwd = 20200221; Port = 3306; Connection Timeout = 180; Allow Zero Datetime = True"
試試這種寫法。
uj5u.com熱心網友回復:
我從來沒使用過MySql.給您一些建議吧。直接使用linq to sql類。現在的VS平臺已經完全做到資料操作自動化了。即便是以前,這樣寫法也是存在問題的。代碼量一大,不忍直視過往,完全沒法看。最低最低您得弄個資料訪問類啊。界面操作就是界面操作邏輯。winform的話,所有操作也同樣可以弄到操作層里面。一樣應該執行mvc的理念。uj5u.com熱心網友回復:
Dim connectionString As String="Server = localhost; Database = {#myDB}; Uid = root; Pwd = 20200221; Port = 3306; Connection Timeout = 180; Allow Zero Datetime = True"
試試這種寫法。
報錯現象依舊。
uj5u.com熱心網友回復:
我從來沒使用過MySql.給您一些建議吧。直接使用linq to sql類。現在的VS平臺已經完全做到資料操作自動化了。即便是以前,這樣寫法也是存在問題的。代碼量一大,不忍直視過往,完全沒法看。最低最低您得弄個資料訪問類啊。界面操作就是界面操作邏輯。winform的話,所有操作也同樣可以弄到操作層里面。一樣應該執行mvc的理念。是應該做成資料訪問類,我現在只是簡單驗證一下是否可行,若可行,會做成類的。謝謝。
我看了一下linq to sql,貌似只支持sql server,要用MySQL需要另外配置。試試看。再次感謝。
其實我之前用過ODBC連接MySQL,只是看著有用ADO.Net的就想試試,結果老是報錯
uj5u.com熱心網友回復:
可以大神能指點一二?轉載請註明出處,本文鏈接:https://www.uj5u.com/net/69601.html
標籤:VB.NET
上一篇:word轉換成html的方法
