本文主要是介绍删除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.DelUserDim strSQL As String = "delete from User_info where userName=@username"Dim params() As SqlParameter = {New SqlParameter("@username", user.user_name)}Dim helper As New SqlHelperDim int = helper.ExecuteNoQuery(strSQL, CommandType.Text, params)Return intEnd 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 IAddDelDim className As String = AssemblyName + "." + db + "AddDelDAL"Dim iadddel As IAddDeliadddel = CType(Assembly.Load(AssemblyName).CreateInstance(className), IAddDel) '反射Return iadddelEnd 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 BooleanDim int = iadddel.DelUser(user)If int = 1 ThenReturn TrueElseReturn FalseEnd IfEnd 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.CountDim thisUser As New Entity.LoginEntityDim ub As New BLL.AddDelBLL'判断是否有选择记录If k > 0 ThenIf 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 ThenMsgBox("当前用户不能被删除,请重新选择!", vbOKOnly + vbExclamation, "系统提示")Exit SubElseIf ub.IsDelUser(thisUser) = True ThenMsgBox("删除成功!", vbOKOnly + vbInformation, "系统提示")ElseMessageBox.Show("删除失败!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error)End If'将从数据库中删除的信息从Datagridview1中删除 gvwUser.Rows.RemoveAt(gvwUser.SelectedRows(i - 1).Index)End IfNextEnd IfElseMsgBox("请选中要删除的行")Exit SubEnd IfEnd Sub</span></span>
效果如下:
删除前: 删除后:
我们通过DataGridView对数据进行操作更加直观,但是数据无价,操作数据库时一定要谨慎!以免给我们带来不必要的麻烦。必要时删除前要给与提示,是否确定删除,或者提高操作权限,方便操作的前提是保证数据的安全性!
这篇关于删除DataGridView选中行并更新数据库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!