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

简介:   前面写过一篇文章是DataGridView控件显示数据的,DataGridView在与数据库打交道时会经常出现,也很实用。通过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
                    '获取用户名
                    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对数据进行操作更加直观,但是数据无价,操作数据库时一定要谨慎!以免给我们带来不必要的麻烦。必要时删除前要给与提示,是否确定删除,或者提高操作权限,方便操作的前提是保证数据的安全性!

目录
相关文章
|
6月前
|
分布式计算 大数据 数据处理
MaxCompute操作报错合集之odps数据库T1有几百行的数据,为什么出来只有5行的数据
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
7月前
|
SQL 数据库连接 数据库
C# | 将DataGridView中的数据保存到Accesss数据库
要将WinForm的DataGridView中的数据保存到Access数据库,可以按照本文的步骤进行。 在Visual Studio中,打开项目,右键单击“引用”文件夹,选择“添加引用”,在“COM”选项卡中找到并选中“Microsoft Office 14.0 Access Database Engine Object Library”,然后单击“确定”按钮。
318 0
C# | 将DataGridView中的数据保存到Accesss数据库
|
存储 监控 固态存储
【视频】-RDS-云关系行数据库的解析与实践|学习笔记(三)
快速学习【视频】-RDS-云关系行数据库的解析与实践
【视频】-RDS-云关系行数据库的解析与实践|学习笔记(三)
|
存储 弹性计算 监控
RDS-云关系行数据库的解析与实践|学习笔记(三)
快速学习RDS-云关系行数据库的解析与实践
199 0
RDS-云关系行数据库的解析与实践|学习笔记(三)
|
存储 缓存 NoSQL
哪些数据库是行存储?哪些是列存储?有什么区别?
导读:本文带你了解面向列与面向行的数据库。
|
数据库 Python
Python编程:MySQLdb模块更新数据库获取影响行数
Python编程:MySQLdb模块更新数据库获取影响行数
227 0
|
C# 数据库
C#编程-75:DataGridView直接修改数据库_
C#编程-75:DataGridView直接修改数据库_
302 0
|
SQL 数据库
VB:使用Visual Studio 2010中的VB语言工具箱DataGridView调用SQL数据库Database的表格文件
VB:使用Visual Studio 2010中的VB语言工具箱DataGridView调用SQL数据库Database的表格文件
VB:使用Visual Studio 2010中的VB语言工具箱DataGridView调用SQL数据库Database的表格文件
|
城市大脑 资源调度 Cloud Native
数字化城市创新行 | 企业上云的数据库演进之路
近日,阿里云协同阿里云生态伙伴主办的2021年数字化城市创新行在山东济南和辽宁大连召开。阿里云的数字化产品与解决方案帮助中小企业共享机遇,也为两地经济数字化转型开启新的“赛季”。
395 0
数字化城市创新行 | 企业上云的数据库演进之路
|
数据库 .NET 开发框架