删除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 [email protected]"
        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
                    '获取用户名
                    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>

效果如下:

删除前:                                             删除后:

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

时间: 2024-10-14 17:00:25

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

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

C#--DataGridView选中行,在TextBox中显示选中行的内容,在DataGridView的SelectionChanged实践中设置如下代码 private void dataGridView1_SelectionChanged(object sender, EventArgs e) { int index = dataGridView1.SelectedRows[0].Index; //获取选中行的行号 textBox1.Text = dataGridView1.Rows[ind

C# 获取DataGridView选中行的值

int index = DataGridView1.CurrentRow.Index;    //取得选中行的索引 txt_ProductId.Text = DataGridView1.Rows[index].Cells["Id"].Value;   //获取单元格列名为‘Id’的值

C#.net删除dataGridView中选中行并同时更新数据库

private void Delete_Click(object sender, EventArgs e)        { SqlConnection conn = new SqlConnection("数据库连接串");             conn.Open();             SqlDataAdapter daAuthors = new SqlDataAdapter("Select * From student", conn); DataSet

DataGridView选中行按从上到下或从下到上排序

/// <summary>    /// 从上到下排列选择行    /// </summary>    /// <param name="dgv"></param>    /// <returns></returns>    public static List<DataGridViewRow> SortedUpDownSelectedRows(this DataGridView dgv)    {  

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

DataGridView控件是微软预先写好的一个显示数据的控件,功能非常强大,可以显示来自数据库表的数据和XML等其他来源的数据.最近在做一个迷你超市管理系统,要大量用到这个控件.所以花时间好好研究了下. 这是迷你超市管理系的库存数据DataGridView,用户一定会想如果能直接在DGV中修改数据就好了. 是的,这是一个很好的想法,这个功能微软早就帮我们想到了,现在可以使两种方法加以实现.下面就来介绍一下他们. 第一张方法:基于DataAdapter对象创建一个CommandBulider,用

DataGridView取消默认选中行

最近用Winform的DataGridView遇到不少问题,昨晚就碰到个默认选中行的问题.DataGridView在添加数据后会默认选中第 一个单元格或者第一行,我就想取消它的默认选中行.于是就在绑定数据的地方加了dataGridView1.ClearSelection()这句代码, 启动窗体之后发现第一行还是被选中了.后来上网搜索,看到很多人都遇到这个问题,解决方法无非就是那几句代码.可我试了几次都不管用,百思不得其解..       后来才知道得把它放到窗体的Load事件中,于是添加了for

Gridviewcontrol控件和DataGridView控件获得当前选中行

Gridviewcontrol控件在事件处理函数中取得当前行的某列的值: string buyPlanId = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "BuyPlanId").ToString(); int buyState = Convert.ToInt32(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "BuyState")); 控

删除更新数据库字段

/** * 删除更新数据库字段 * @param $table * @param $field * @param $teacherId * @param $idArr * @param $sqlOptions sql条件字段 --查询 */ public function updateField($table, $field, $teacherId, $idArray, $sqlOptions = '') { $is = M("{$table}")->find("$sq

删除dataGridview中选中的一行或多行

DialogResult RSS = MessageBox.Show(this,"确定要删除选中行数据码?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Warning); switch(RSS) { case DialogResult.Yes: for (int i = this.dataGridView1.SelectedRows.Count; i > 0; i--) { int ID = Convert.ToI