多记录保存: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
相关产品推荐
相关产品推荐

