You need to enable JavaScript to run this app. VB.NET如何通过ADODB连接MySQL数据库并绑定至DataGridView
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET如何通过ADODB连接MySQL数据库并绑定至DataGridView

VB.NET ADODB连接MySQL绑定DataGridView问题修复方案

问题根因

  • 核心逻辑错误:.NET 原生 DataGridView 不支持直接绑定 ADODB.Recordset 类型对象,必须先将 Recordset 转换为 ADO.NET 的 DataTable 才可正常显示数据
  • 无效冗余操作:代码首次打开 Recordset 后立刻执行关闭,重复两次打开查询完全无意义,额外占用数据库资源
  • 不规范代码:sql2 变量未提前声明就直接使用,存在隐式类型转换风险
  • 缺失异常捕获:没有错误捕获逻辑,连接、查询过程中出现的错误会静默失败,同时未手动释放连接和Recordset对象,容易造成数据库连接泄漏

前置检查

  • 项目已添加 ADODB 引用:右键项目 → 添加引用 → COM 选项卡 → 勾选「Microsoft ActiveX Data Objects 2.8 Library」或更高版本
  • 本地已安装 MySQL ODBC 8.0 Unicode Driver 驱动,连接字符串中的数据库地址、库名、账号、密码配置正确,STOCK 表实际存在

修正后代码

Imports System.Data
Imports ADODB
Imports System.Data.OleDb
' 原有业务需要的MySql、Crystal Reports相关引用可以自行保留

Public Class Form3
    Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim conn As New ADODB.Connection()
        Dim mrs As New ADODB.Recordset()
        Dim sconnect As String = "DRIVER={MySQL ODBC 8.0 Unicode Driver};Server=localhost;Database=stockauto;User=root;Password=;"
        Dim sql2 As String = "SELECT * From STOCK"

        Try
            ' 打开数据库连接
            If conn.State = ConnectionState.Open Then
                conn.Close()
            End If
            conn.Open(sconnect)

            ' 执行查询
            mrs.Open(sql2, conn, CursorTypeEnum.adOpenStatic, LockTypeEnum.adLockReadOnly)

            ' 将ADODB.Recordset转换为DataTable
            Dim da As New OleDbDataAdapter()
            Dim dt As New DataTable()
            da.Fill(dt, mrs)

            ' 绑定到DataGridView
            DataGridView1.DataSource = dt

        Catch ex As Exception
            ' 可根据业务需要自定义异常处理逻辑
            MsgBox("操作失败:" & ex.Message)
        Finally
            ' 手动释放资源避免连接泄漏
            If mrs.State = ConnectionState.Open Then
                mrs.Close()
            End If
            If conn.State = ConnectionState.Open Then
                conn.Close()
            End If
            mrs = Nothing
            conn = Nothing
        End Try
    End Sub
End Class

内容的提问来源于stack exchange,提问作者Sajith M U

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 19:06:03