【问题标题】:How to connect datagrid and mysql database through adodb如何通过adodb连接datagrid和mysql数据库
【发布时间】:2021-08-04 16:08:15
【问题描述】:

我必须使用 mysql 中的 adodb 在 vb.net(visual studio 2008) 的数据网格中显示一个表格。 但以下代码不起作用。(未显示错误) 请帮忙 由于错误,我选择了 adodb,即使经过多次尝试,使用 mysqldataadpter

Imports MySql.Data.MySqlClient
'Imports MySql.Data.Types
'Imports MySql.Data.VisualStudio
'Imports MySql.Data
Imports System.IO
Imports System.Data
Imports CrystalDecisions.CrystalReports.Engine

Public Class Form3
    Dim sSQLQry As String
    Dim ReturnArray
    Dim Conn As New ADODB.Connection
    Dim mrs As New ADODB.Recordset
    Dim mrs2 As New ADODB.Recordset


    Dim DBPath As String, sconnect As String


    Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       
        sconnect = "DRIVER={MySQL ODBC 8.0 Unicode Driver};Server=localhost;Database=stockauto;User=root;Password=;"
        If Conn.State = 1 Then
            Conn.Close()
        End If
        Conn.Open(sconnect)
        sql2 = "SELECT * From STOCK"
        mrs.Open(sql2, Conn)
        If mrs.State = 1 Then
            mrs.Close()
        End If
        mrs.Open(sql2, Conn)
        DataGridView1.DataSource = mrs
        DataGridView1.Refresh()


    End Sub 

【问题讨论】:

  • “由于错误,我选择了 adodb,即使经过多次尝试,使用 mysqldataadpter”。那是一个可怕的、可怕的想法。如果 ADO.NET 不起作用,那是因为您做错了。你应该就那个错误寻求帮助。现在,您刚刚使糟糕的情况变得更糟,但它仍然无法正常工作。据我们所知,您现在犯的错误与当时相同。不要使用已经过时 20 年的技术。
  • 感谢朋友的宝贵建议。ado.net连接的错误是-字典中不存在给定的键。-在以下代码中` Dim MysqlConn As MySqlConnection Dim command As MySqlCommand MysqlConn = New MySqlConnection MysqlConn.ConnectionString = "Server=localhost;Database=stockauto;User=root;Password=;" 'Dim reader As MySqlDataReader Dim sda As New MySqlDataAdapter Dim dbdataset As New DataTable Dim bsource As New BindingSource 'Try MysqlConn.Open()` 错误在最后一行
  • 这不是在 cmets 中针对不同问题发布的地方。您应该发布一个针对该问题的单独问题,其中包含与该问题相关的所有信息,并且仅包含与该问题相关的信息。在最好的情况下,评论不是发布长代码 sn-ps 的地方,因为它们很难阅读。
  • 好的,我试过了。但是出现了禁止提问。对不起
  • 我不知道那是什么意思。看来您只是写了一个错误的连接字符串,并没有费心去了解正确的连接器/网络连接字符串是什么样的。如果你这样做了,你就不会在 ADODB 的死胡同上浪费所有的时间和精力。您可以学习如何编写正确的连接字符串here

标签: mysql vb.net adodb


【解决方案1】:

首先是连接字符串。见https://www.connectionstrings.com/mysql-connector-net-mysqlconnection/

我用了最简单的例子。将yourUserIDyourPassword 替换为实际值。

摆脱所有 ADODB 和 ODBC 的东西。此代码使用 ADO.net

Using...End Using 块确保数据库对象被关闭和释放。

Private MySqlConnStr As String = "Server=localhost;Database=stockauto;Uid=yourUserId;Pwd=yourPassword;"
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim dt = GetStockData()
    DataGridView1.DataSource = dt
End Sub
Private Function GetStockData() As DataTable
    Dim dt As New DataTable
    Using cn As New MySqlConnection(MySqlConnStr),
            cmd As New MySqlCommand("SELECT * From STOCK", cn)
        cn.Open()
        Using reader = cmd.ExecuteReader
            dt.Load(reader)
        End Using
    End Using
    Return dt
End Function

【讨论】:

  • 非常感谢。我试过了。但是它导致了一个错误-字典中不存在给定的键。 @cn.open().请帮忙!
  • @SajithMU 您的连接字符串仍然不正确.. 除了使用假密码和用户 ID 之外,您能否准确发布连接字符串的内容。
  • @MARY,非常感谢。终于成功了!问题是由于mysql连接器的版本。我尝试了另一个版本,现在它可以工作了。再次感谢您
  • @SajithMU 如果我的回答有帮助,请点击我回答左侧的复选标记(勾号)接受它。
【解决方案2】:

ADODB 是来自 pre-.Net VB 的旧机制。它的存在只是为了向后兼容旧代码,不应用于新开发

试试这个,它使用更新的 ADO.Net:

      ' Don't use the root account to connect to the database!
Private sconnect As String = "DRIVER={MySQL ODBC 8.0 Unicode Driver};Server=localhost;Database=stockauto;User=root;Password=;"

Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
   
    Dim data As New DataTable
    Using cn As New MySqlConnection(sconnect), _
          cmd As New MySqlCommand("SELECT * FROM Stock", cn), _
          da As New MySqlDataAdapter(cmd)

        da.Fill(data)
    End Using

    DataGridView1.DataSource = data
    DataGridView1.Refresh()
End Sub 

【讨论】:

  • 非常感谢。我试过但导致错误 - 不支持关键字。参数名称:driver- 行中的-cn As New MySqlConnection(sconnect)- 这些被使用 Imports MySql.Data.MySqlClient Imports MySql.Data Imports System.IO Imports System.Data Imports CrystalDecisions.CrystalReports.Engine
  • 我也累了另一种方式。但这也导致了错误 - 字典中不存在给定的键。- 在以下代码中 ` Dim MysqlConn As MySqlConnection Dim command As MySqlCommand MysqlConn = New MySqlConnection MysqlConn。 ConnectionString = "服务器=本地主机;数据库=stockauto;用户=root;密码=;" 'Dim reader As MySqlDataReader Dim sda As New MySqlDataAdapter Dim dbdataset As New DataTable Dim bsource As New BindingSource 'Try MysqlConn.Open()` 错误在最后一行
猜你喜欢
  • 1970-01-01
  • 2011-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-06
  • 1970-01-01
  • 2021-04-02
相关资源
最近更新 更多