删除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>
效果例如以下:
删除前: 删除后:
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选中行并更新数据库的更多相关文章
- C#中datagridview选中行后textbox显示选中的内容
我想让datagridview中某一行被选中时,textbox中显示选中的值,datagridview的选中模式是整行:this.dataGridView1.SelectionMode = DataG ...
- C#——DataGridView选中行,在TextBox中显示选中行的内容
C#--DataGridView选中行,在TextBox中显示选中行的内容,在DataGridView的SelectionChanged实践中设置如下代码 private void dataGridV ...
- DataGridView 选中行 分类: DataGridView 2015-01-22 09:07 51人阅读 评论(0) 收藏
说明: (1)命名 DataGridView 名称:dgvStockFirst 行索引:recordIndex (2)设置DataGridView属性: SelectionMode=FullRowSe ...
- ABP .NETCore更新数据库时一直连接的之前数据库
使用Update-Database -Verbose更新数据库时,在appsettings.json配置文件中已修改为新的连接字符串,但是使用命令更新数据库时仍然连接的是之前的数据库. 后来把代码移至 ...
- ACCESS删除datagridview和数据库中的一条数据,同时更新显示的方法源码
//删除,行删除 private void 删除_Click(object sender, EventArgs e) { int dgrcount = dataGridView1.SelectedRo ...
- DataGridView编辑后立即更新到数据库的两种方法
DataGridView控件是微软预先写好的一个显示数据的控件,功能非常强大,可以显示来自数据库表的数据和XML等其他来源的数据. 方法一:基于DataAdapter对象创建一个CommandBuli ...
- DataGridView取消默认选中行
DataGridView在添加数据后会默认选中第 一个单元格或者第一行,我就想取消它的默认选中行.在DataGridView绑定数据之后加上了ClearSelection().这样一来,不论是启动窗体 ...
- DataGridView中获取与设置当前选中行以及SelectedRows和CurrentRow注意区分
场景 DataGridView怎样实现添加.删除.上移.下移一行: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10281414 ...
- 获取DataGridView中的的选中行
1. 获取DataGridView中的的选中行:http://blog.csdn.net/yiqijinbu/article/details/7734593 2.winform datagridvie ...
随机推荐
- Python函数的装饰器
函数的装饰器. 1. 装饰器 开闭原则: 对功能的扩展开放 对代码的修改是封闭 通用装饰器语法: def wrapper(fn): def inner(*args, **kwargs): # 聚合 & ...
- 模板<最小生成树>
转载 最小生成树浅谈 这里介绍最小生成树的两种方法:Prim和Kruskal. 两者区别:Prim在稠密图中比Kruskal优,在稀疏图中比Kruskal劣.Prim是以更新过的节点的连边找最小值,K ...
- 关于在一台主机上安装2个不同版本的Oracle服务端
一.安装Oracle12c 按正常安装方法安装即可! ORACLE_BASE=/u01/app ORACLE_HOME=/u01/app/oracle ORACLE_SID=a4orcl 二.安装Or ...
- Django之ORM操作(重要)
Django ORM操作 一般操作 看专业的官网文档,做专业的程序员! 必知必会13条 <1> all(): 查询所有结果 <2> get(**kwargs): 返回与所给 ...
- 15,re正则表达式
判断手机号是否合法. phone_number = input('请输入手机号:') if re.match('^(13|14|15|18)[0-9]{9}$',phone_number): prin ...
- FFT-hdu题目练习
网上FFT的讲解和板子有很多,所以直接放题目 hdu1402 http://acm.hdu.edu.cn/showproblem.php?pid=1402 /* problem:大整数乘法 solut ...
- 一、harbor部署之centos7的基本配置
1 最小安装centos7 ...安装省略... centos7最小化安装后没ifconfig命令,用 ip addr 命令查看网络信息. 2 配置网络 1.cd /etc/sysconfig/net ...
- Ubuntu Software Center has closed unexpectly解决方案
打开软件中心Ubuntu Software Center的时候 出现crash report :The application Ubuntu Software Center has closed un ...
- 【转】OPC远程访问相关配置信息
原文:http://blog.gkong.com/kking_25653.ashx 对于远程访问OPC服务器,需要在客户和服务器计算机上都进行DCOM设置,本文提供一些具体配置方法.(by Kevin ...
- Snmp的学习总结(一)
摘自:http://blog.csdn.net/shanzhizi/article/details/11606767 目录(?)[-] SNMP的5种协议数据单元 SNMP的运行过程 11 Get ...