删除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列表,元组,字典,集合详细操作
菜鸟学Python第五天 数据类型常用操作及内置方法 列表(list) ======================================基本使用====================== ...
- module_param
该宏定义在include/linux/moduleparam.h中 #define ___module_cat(a,b) __mod_ ## a ## b #define __module_cat(a ...
- 关于网络IP地址的分类
一.IP地址的分类 众所周知,IP地址都是以点号.分为4段来表示.不同类的IP前几位的表示含义也不尽相同. 1.A类IP [网络地址] 第一位表示网络地址,且第一个字节的第一位必须以0开头.依据此原则 ...
- Knockout v3.4.0 中文版教程-2-监控-通过监控创建视图模型(上)
2. 监控 1.通过监控创建视图模型 1. 监控 Knockout是基于以下三个核心特性: 监控和依赖跟踪 声明式绑定 模板 在本节,你将第一次了解这三个特性,在这之前,我们先来了解以下MVVM模式和 ...
- win10系统中virtualbox无法安装64位系统
win10系统中virtualbox无法安装64位系统 先总结下如果想在虚拟机中安装64位的Linux系统,最好能满足这几个条件: 64位CPU 64位操作系统 64位的虚拟机软件 开启BIOS虚拟化 ...
- 转:深入 AngularUI Router
原文地址:http://www.ng-newsletter.com/posts/angular-ui-router.html ui-router: https://angular-ui.github. ...
- HDU 5527 Too Rich
Too Rich Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total ...
- Codeforces Round #390 (Div. 2) A+B+D!
A. Lesha and array splitting 水题模拟.(0:10) 题意:给你一个n个元素的数组,求能否把这个数组分成若干连续小段,使得每段的和不为0.如有多种解输出任意一个. 思路:搞 ...
- Java&Android代码规范
项目中直接导入Square的代码风格文件.(不导入Google的原因是Square同时提供了Java和Android两套统一风格,Google只提供了一套) Square Code Styles Go ...
- 【bzoj4197】[Noi2015]寿司晚宴 分解质因数+状态压缩dp
题目描述 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴. 在晚宴上,主办方为大家提供了 n−1 种不同的寿司,编号 ...