视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
删除DataGridView选中行并更新数据库
2020-11-09 15:00:52 责编:小采
文档

前面写过一篇文章是DataGridView控件显示数据的,DataGridView在与数据库打交道时会经常出现,也很实用。通过DataGridView对数据库进行更改和查询都比较方便。 这里我们需要用DataGridView数据,并通过选中行将数据从数据库中删除。 其原理是把选中记录的主

前面写过一篇文章是DataGridView控件显示数据的,DataGridView在与数据库打交道时会经常出现,也很实用。通过DataGridView对数据库进行更改和查询都比较方便。

这里我们需要用DataGridView数据,并通过选中行将数据从数据库中删除。

其原理是把选中记录的主键提取出来,然后传给实体,通过实体给D层传值实现对数据库的修改。

下面是各层代码,供大家参考。

接口层代码都是D层的父类方法,这里只给出D层代码:

 '重写删除用户接口方法
 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

抽象工厂代码:
 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
B层代码:
 '判断是否删除成功
 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
U层代码
 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

效果如下:

删除前: 删除后:

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

下载本文
显示全文
专题