You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过auto increment ID更新ListBox数据并同步至MySQL Workbench

ListBox数据修改与MySQL同步实现方案

一、修正ListBox本地更新逻辑

你当前代码中的.AddItem会新增空行,这不符合修改现有数据的需求,需要删除该行,直接定位匹配ID的行并更新Qty列:

Private Sub btn_Update_Sales_Click()
    Dim r As Integer
    Dim updateSuccess As Boolean
    
    ' 更新ListBox中匹配ID的行
    With frmUpdateSales.ListBox3
        updateSuccess = False
        For r = 0 To .ListCount - 1
            ' 匹配auto increment ID(ListBox第0列)
            If .List(r, 0) = frmUpdateSales.txtTransactn_ID.Value Then
                ' 直接修改Qty列(ListBox第6列)
                .List(r, 6) = frmUpdateSales.txt_Qty.Value
                updateSuccess = True
                Exit For ' 找到目标行后终止循环,提升效率
            End If
        Next r
    End With
    
    ' 后续添加MySQL同步逻辑(见下方)
End Sub

二、添加MySQL数据库同步逻辑

在ListBox更新成功后,通过参数化查询同步数据到MySQL,避免SQL注入风险:

Private Sub btn_Update_Sales_Click()
    Dim r As Integer
    Dim conn As ADODB.Connection
    Dim cmd As ADODB.Command
    Dim updateSuccess As Boolean
    
    ' 更新ListBox中匹配ID的行
    With frmUpdateSales.ListBox3
        updateSuccess = False
        For r = 0 To .ListCount - 1
            If .List(r, 0) = frmUpdateSales.txtTransactn_ID.Value Then
                .List(r, 6) = frmUpdateSales.txt_Qty.Value
                updateSuccess = True
                Exit For
            End If
        Next r
    End With
    
    ' 同步更新到MySQL
    If updateSuccess Then
        On Error GoTo UpdateError
        
        ' 初始化数据库连接(替换为你的实际配置)
        Set conn = New ADODB.Connection
        conn.ConnectionString = "DRIVER={MySQL ODBC 8.0 Unicode Driver};SERVER=你的服务器地址;DATABASE=你的数据库名;UID=用户名;PWD=密码;"
        conn.Open
        
        ' 准备参数化更新命令(替换为你的表名和字段名)
        Set cmd = New ADODB.Command
        cmd.ActiveConnection = conn
        cmd.CommandText = "UPDATE 你的销售表 SET Qty = ? WHERE id = ?"
        
        ' 添加参数
        cmd.Parameters.Append cmd.CreateParameter("Qty", adInteger, adParamInput, , frmUpdateSales.txt_Qty.Value)
        cmd.Parameters.Append cmd.CreateParameter("ID", adInteger, adParamInput, , frmUpdateSales.txtTransactn_ID.Value)
        
        ' 执行更新
        cmd.Execute
        
        ' 清理资源
        conn.Close
        Set cmd = Nothing
        Set conn = Nothing
        
        MsgBox "数据更新成功!"
    Else
        MsgBox "未找到匹配的记录!"
    End If
    
    Exit Sub
    
UpdateError:
    MsgBox "数据库更新出错:" & Err.Description
    If conn.State = adStateOpen Then conn.Close
    Set cmd = Nothing
    Set conn = Nothing
End Sub

注意事项

  • 替换代码中你的服务器地址、你的数据库名、用户名、密码、你的销售表等占位符为实际信息
  • 需要在VB工程中引用Microsoft ActiveX Data Objects x.x Library(推荐选最新版本,如6.1)
  • 始终使用参数化查询,禁止直接拼接SQL语句,避免SQL注入攻击
  • 可根据实际需求调整错误提示内容和逻辑

内容的提问来源于stack exchange,提问作者Kobby Adom

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 03:03:24