You need to enable JavaScript to run this app. VB.NET结合SQL Server删除数据时如何判断无行记录并弹出提示
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET结合SQL Server删除数据时如何判断无行记录并弹出提示

删除功能修正说明
  • 判定条件错误:dt.Rows.Count 的最小值为0,原代码中dt.Rows.Count < 0 的判定永远不会成立,无法触发无记录提示
  • 语句类型错误:删除操作用了UPDATE更新语句,完全不符合业务需求
  • 查询逻辑错误:用UPDATE语句填充DataTable,无法正确判定待删除记录是否存在
  • 安全风险:直接拼接用户输入到SQL语句中,存在SQL注入漏洞,修正方案使用参数化查询规避风险
  • 简化判定方案:如果要直接判断DataGridView是否还有记录,可直接判定DataGridView控件名.Rows.Count = 0,无需额外查询数据库

修正后代码

Private Sub btnDelete_Click(sender As Object, e As EventArgs) Handles btnDelete.Click
    ' 把DataGridView1替换为你实际使用的DataGridView控件名
    If DataGridView1.Rows.Count = 0 Then
        MessageBox.Show("无记录可删除", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
        Exit Sub
    End If

    If MessageBox.Show("确定要删除该记录吗?", "删除确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question) <> DialogResult.Yes Then
        MessageBox.Show("已取消删除", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
        Exit Sub
    End If

    Using con As New SqlConnection("Data Source=(LocalDB)\UserDb;Initial Catalog=vbLoginForm;Integrated Security=True")
        ' 替换为正确的DELETE删除语句,使用参数化查询
        Dim cmd As New SqlCommand("DELETE FROM [dbo].[Customers] WHERE [Customer's Name] = @CusName", con)
        cmd.Parameters.AddWithValue("@CusName", txtName.Text)
        Try
            con.Open()
            Dim affectRows As Integer = cmd.ExecuteNonQuery()
            If affectRows = 0 Then
                MessageBox.Show("无记录可删除", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Else
                MessageBox.Show("数据删除成功", "删除成功", MessageBoxButtons.OK, MessageBoxIcon.Information)
                ' 清空输入框
                txtAddress.Text = ""
                txtName.Text = ""
                txtOrder.Text = ""
                txtRental.Text = ""
                txtNumber.Text = ""
                CustomersBindingSource.MoveNext()
            End If
        Catch ex As Exception
            MessageBox.Show($"删除失败:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            con.Close()
        End Try
    End Using
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 07:24:03