如何通过adodb连接datagrid和mysql数据库

How to connect datagrid and mysql database through adodb

我必须使用 mysql 中的 adodb 在 vb.net(visual studio 2008)的数据网格中显示 table。 但以下代码不起作用。(未显示错误) 请帮忙 由于错误,我选择了 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 是 .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 

首先是连接字符串。参见 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