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

多记录保存:WinForm点击按钮批量插入TextBox数据至自增ID表

完善你的数据插入代码(规避风险+正确实现)

你的需求很清晰:点击按钮把三个TextBox的内容插入到MOUVEMENT表,ID作为自动编号字段无需手动处理。不过原代码存在SQL注入风险,也没有妥善管理数据库资源,我帮你优化成更安全、健壮的版本:

优化后的完整代码

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    ' 建议把连接字符串放到项目的配置文件(App.config)里,这里为了示例直接书写
    Dim connectionString As String = "你的数据库连接字符串"
    
    Try
        ' Using语句会自动释放连接资源,无需手动调用Close
        Using con As New SqlConnection(connectionString)
            con.Open()
            
            ' 用参数化SQL代替直接拼接字符串,彻底杜绝SQL注入
            Dim insertSql As String = "INSERT INTO MOUVEMENT(Row1, Row2, Row3) VALUES (@Row1, @Row2, @Row3)"
            
            ' 同样用Using管理命令对象,自动释放资源
            Using insertCommand As New SqlCommand(insertSql, con)
                ' 给参数赋值,对应三个TextBox的内容(加Trim()去除首尾空格)
                insertCommand.Parameters.AddWithValue("@Row1", TextBox1.Text.Trim())
                insertCommand.Parameters.AddWithValue("@Row2", TextBox2.Text.Trim())
                insertCommand.Parameters.AddWithValue("@Row3", TextBox3.Text.Trim())
                
                ' 执行插入操作,获取受影响的行数
                Dim affectedRows As Integer = insertCommand.ExecuteNonQuery()
                
                If affectedRows > 0 Then
                    MessageBox.Show("数据插入成功!")
                    ' 插入成功后清空输入框,提升用户体验
                    TextBox1.Clear()
                    TextBox2.Clear()
                    TextBox3.Clear()
                Else
                    MessageBox.Show("数据插入失败,请检查!")
                End If
            End Using
        End Using
    Catch ex As Exception
        ' 捕获异常并提示具体错误,方便调试排查
        MessageBox.Show($"插入数据时出现错误:{ex.Message}")
    End Try
End Sub

几个关键改进点

  • 杜绝SQL注入:用@Row1这类参数占位符代替直接拼接TextBox内容,不仅安全,还能处理内容里有单引号、特殊字符的情况,避免SQL语法错误。
  • 自动管理资源:Using语句会自动调用SqlConnection和SqlCommand的Dispose方法,不管代码是否抛出异常,都能保证数据库连接被正确关闭,不会造成资源泄漏。
  • 友好的用户反馈:插入成功后清空输入框,失败时给出提示,异常时显示具体错误信息,方便你快速排查问题。
  • 适配自动编号ID:因为ID是自动编号字段,INSERT语句里不需要指定它,数据库会自动生成唯一的ID值,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:22:10