删除DataGridView选中行并更新数据库

  前面写过一篇文章是DataGridView控件显示数据的,DataGridView在与数据库打交道时会常常出现,也非常有用。通过DataGridView对数据库进行更改和查询都比較方便。

  这里我们须要用DataGridView数据,并通过选中行将数据从数据库中删除。

  其原理是把选中记录的主键提取出来,然后传给实体,通过实体给D层传值实现对数据库的改动。

  以下是各层代码。供大家參考。

  接口层代码都是D层的父类方法。这里仅仅给出D层代码:

<span style="background-color: rgb(255, 255, 255);"><span style="font-family:KaiTi_GB2312;font-size:18px;">    '重写删除用户接口方法
    Public Function DelUser(user As Entity.LoginEntity) As Integer Implements IAddDel.DelUser
        Dim strSQL As String = "delete from User_info where userName=@username"
        Dim params() As SqlParameter = {New SqlParameter("@username", user.user_name)}
        Dim helper As New SqlHelper
        Dim int = helper.ExecuteNoQuery(strSQL, CommandType.Text, params)
        Return int
    End Function</span></span>

  抽象工厂代码:

<span style="background-color: rgb(255, 255, 255);"><span style="font-family:KaiTi_GB2312;font-size:18px;">  Private Shared ReadOnly AssemblyName As String = "DAL" '声明程序集名称
    Private Shared ReadOnly db As String = ConfigurationManager.AppSettings("DB") '读取配置文件

    Public Function AddDel() As IAddDel
        Dim className As String = AssemblyName + "." + db + "AddDelDAL"
        Dim iadddel As IAddDel
        iadddel = CType(Assembly.Load(AssemblyName).CreateInstance(className), IAddDel) '反射
        Return iadddel
    End Function
</span></span>

  B层代码:

<span style="background-color: rgb(255, 255, 255);"><span style="font-family:KaiTi_GB2312;font-size:18px;">    '推断是否删除成功
    Public Function IsDelUser(ByVal user As Entity.LoginEntity) As Boolean
        Dim int = iadddel.DelUser(user)
        If int = 1 Then
            Return True
        Else
            Return False
        End If
    End Function</span></span>

  U层代码

<span style="background-color: rgb(255, 255, 255);"><span style="font-family:KaiTi_GB2312;font-size:18px;"> Dim k As Integer = gvwUser.SelectedRows.Count
        Dim thisUser As New Entity.LoginEntity
        Dim ub As New BLL.AddDelBLL
        '推断是否有选择记录
        If k > 0 Then
            If MessageBox.Show("删除用户后将无法恢复!

是否继续删除?", "提示", MessageBoxButtons.YesNo, _ MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then '从下往上删,避免沙漏效应 For i As Integer = k To 1 Step -1 '获取username thisUser.user_name = gvwUser.SelectedRows(i - 1).Cells("userName").Value.ToString '推断选中用户是否为登录用户 If thisUser.user_name = UserName Then MsgBox("当前用户不能被删除。请又一次选择!", vbOKOnly + vbExclamation, "系统提示") Exit Sub Else If ub.IsDelUser(thisUser) = True Then MsgBox("删除成功!", vbOKOnly + vbInformation, "系统提示") Else MessageBox.Show("删除失败!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error) End If '将从数据库中删除的信息从Datagridview1中删除 gvwUser.Rows.RemoveAt(gvwUser.SelectedRows(i - 1).Index) End If Next End If Else MsgBox("请选中要删除的行") Exit Sub End If End Sub</span></span>


  效果例如以下:

  删除前:                                             删除后:






  我们通过DataGridView对数据进行操作更加直观。可是数据无价,操作数据库时一定要慎重。以免给我们带来不必要的麻烦。必要时删除前要给与提示。是否确定删除,或者提高操作权限,方便操作的前提是保证数据的安全性。

原文地址:https://www.cnblogs.com/clnchanpin/p/7200910.html