vb.net 操作 MySQL 报错

hyb2cs 2020-02-21 06:42:11
代码如下:
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 都是新安装的


...全文
343 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyb2cs 2020-02-24
  • 打赏
  • 举报
回复
可以大神能指点一二?
hyb2cs 2020-02-22
  • 打赏
  • 举报
回复
我从来没使用过MySql.给您一些建议吧。直接使用linq to sql类。现在的VS平台已经完全做到数据操作自动化了。即便是以前,这样写法也是存在问题的。代码量一大,不忍直视过往,完全没法看。最低最低您得弄个数据访问类啊。界面操作就是界面操作逻辑。winform的话,所有操作也同样可以弄到操作层里面。一样应该执行mvc的理念。

是应该做成数据访问类,我现在只是简单验证一下是否可行,若可行,会做成类的。谢谢。
我看了一下linq to sql,貌似只支持sql server,要用MySQL需要另外配置。试试看。再次感谢。

其实我之前用过ODBC连接MySQL,只是看着有用ADO.Net的就想试试,结果老是报错
hyb2cs 2020-02-22
  • 打赏
  • 举报
回复

Dim connectionString As String="Server = localhost; Database = {#myDB}; Uid = root; Pwd = 20200221; Port = 3306; Connection Timeout = 180; Allow Zero Datetime = True"

试试这种写法。

报错现象依旧。
jhonsonzhang 2020-02-21
  • 打赏
  • 举报
回复
我从来没使用过MySql.给您一些建议吧。直接使用linq to sql类。现在的VS平台已经完全做到数据操作自动化了。即便是以前,这样写法也是存在问题的。代码量一大,不忍直视过往,完全没法看。最低最低您得弄个数据访问类啊。界面操作就是界面操作逻辑。winform的话,所有操作也同样可以弄到操作层里面。一样应该执行mvc的理念。
周公 2020-02-21
  • 打赏
  • 举报
回复

Dim connectionString As String="Server = localhost; Database = {#myDB}; Uid = root; Pwd = 20200221; Port = 3306; Connection Timeout = 180; Allow Zero Datetime = True"

试试这种写法。

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧