前面写过一篇文章是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>

效果例如以下:

删除前:                                             删除后:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDkyNjk2NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDkyNjk2NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDkyNjk2NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

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

删除DataGridView选中行并更新数据库的更多相关文章

  1. C#中datagridview选中行后textbox显示选中的内容

    我想让datagridview中某一行被选中时,textbox中显示选中的值,datagridview的选中模式是整行:this.dataGridView1.SelectionMode = DataG ...

  2. C#——DataGridView选中行,在TextBox中显示选中行的内容

    C#--DataGridView选中行,在TextBox中显示选中行的内容,在DataGridView的SelectionChanged实践中设置如下代码 private void dataGridV ...

  3. DataGridView 选中行 分类: DataGridView 2015-01-22 09:07 51人阅读 评论(0) 收藏

    说明: (1)命名 DataGridView 名称:dgvStockFirst 行索引:recordIndex (2)设置DataGridView属性: SelectionMode=FullRowSe ...

  4. ABP .NETCore更新数据库时一直连接的之前数据库

    使用Update-Database -Verbose更新数据库时,在appsettings.json配置文件中已修改为新的连接字符串,但是使用命令更新数据库时仍然连接的是之前的数据库. 后来把代码移至 ...

  5. ACCESS删除datagridview和数据库中的一条数据,同时更新显示的方法源码

    //删除,行删除 private void 删除_Click(object sender, EventArgs e) { int dgrcount = dataGridView1.SelectedRo ...

  6. DataGridView编辑后立即更新到数据库的两种方法

    DataGridView控件是微软预先写好的一个显示数据的控件,功能非常强大,可以显示来自数据库表的数据和XML等其他来源的数据. 方法一:基于DataAdapter对象创建一个CommandBuli ...

  7. DataGridView取消默认选中行

    DataGridView在添加数据后会默认选中第 一个单元格或者第一行,我就想取消它的默认选中行.在DataGridView绑定数据之后加上了ClearSelection().这样一来,不论是启动窗体 ...

  8. DataGridView中获取与设置当前选中行以及SelectedRows和CurrentRow注意区分

    场景 DataGridView怎样实现添加.删除.上移.下移一行: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10281414 ...

  9. 获取DataGridView中的的选中行

    1. 获取DataGridView中的的选中行:http://blog.csdn.net/yiqijinbu/article/details/7734593 2.winform datagridvie ...

随机推荐

  1. PHP获得网页源码

    获取网页源代码: <?php $lines = file('http://www.hoverreader.com/'); foreach ($lines as $line_num => $ ...

  2. Python中字典的key都可以是什么

    作者:Inotime 来源:CSDN 原文:https://blog.csdn.net/lnotime/article/details/81192207 答:一个对象能不能作为字典的key,就取决于其 ...

  3. 03006_Servlet简介

    1.什么是Servlet (1)Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求.响应给浏览器的动态资源: (2)Servlet的实质就是java代码 ...

  4. Python第三方库之openpyxl(6)

    Python第三方库之openpyxl(6) 折线图 折线图允许在固定轴上绘制数据,它们类似于散列图,主要的区别在于,在折线图中,每个数据序列都是根据相同的值绘制的,不同的轴可以用于辅助轴,与条形图类 ...

  5. mysql条件查询and or使用实例及优先级介绍

    mysql and与or介绍 AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来. 使用OR关键字时: 只要符合这几个查询条件的其中一个条件,这样的记录就会被查询出来. 如果不符合这 ...

  6. OSPF 提升 三 type of Areas

    ospf  ccnp 三 上图中 rip域中的不连续的100条路由   在a1中导致LSDB太大      在保证网段的可达性的前提下   尽可能减少区域内路由器的lsdb       可以将a1设置 ...

  7. php删除

    <?php$id = $_GET['id'];$db= new Mysqli("localhost","root","root",&q ...

  8. spring配置druid连接池和监控数据库访问性能

    Druid连接池及监控在spring配置如下: <bean id="dataSource" class="com.alibaba.druid.pool.DruidD ...

  9. [luoguP2053] [SCOI2007]修车(最小费用最大流)

    传送门 网络流的建图真的好难! 将一个点拆分成多个点的思想还需要加强. 题解 代码和题解中的图略不一样. #include <queue> #include <cstdio> ...

  10. 【二叉搜索树】hdu 3791

    http://acm.hdu.edu.cn/showproblem.php?pid=3791 [注意] 是看树的形态是否一样,而不是中序遍历的结果 [Accepted] #include<ios ...