zoukankan      html  css  js  c++  java
  • 删除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对数据进行操作更加直观。可是数据无价,操作数据库时一定要慎重。以免给我们带来不必要的麻烦。必要时删除前要给与提示。是否确定删除,或者提高操作权限,方便操作的前提是保证数据的安全性。

  • 相关阅读:
    引用赋值的问题
    mysql的笔记
    输入法失败
    eclipse的快捷键
    c++/c在两个文件公用一个变量
    用c++ sttring检测名字是否有空格
    QLineEdit的信号函数
    c++博客转载
    qt-博客
    QT聊天室--重大bug
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/7200910.html
Copyright © 2011-2022 走看看