C#增删改查操作Access数据库之三(数据库的删除)

功能:选中datagidview中一行数据,点击删除按钮则这一行数据在datagridview中删除同时在数据库中删除

注意:我在实现这个功能的时候,出现了一个bug,目前还没有得到解决。这个就是在第一次单击删除按钮的时候,删除会失败,但是在第二次点击以后就能顺利删除。

如果有大神发现我代码的问题所在,欢迎指点一二。

此问题已解决。

1.删除功能的实现

        public bool   DataDelete(DataGridView dataGridView1, OleDbConnection conn)
        {
            bool result = false;
            DialogResult dr = MessageBox.Show("确定要删除这条记录吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (dr == DialogResult.Yes)
            {
                //int iCount = dataGridView1.SelectedRows.Count;
                Int32 selectedRowCount = dataGridView1.Rows.GetRowCount(DataGridViewElementStates.Selected);
                conn.Open();
                //if (iCount < 1)
                if (selectedRowCount < 1)
                {
                    MessageBox.Show("删除失败!");
                }
                else
                {
                    for (int i = dataGridView1.Rows.Count  - 1; i >= 0; i--)
                    {
                        if (dataGridView1.Rows[i].Selected)
                        {
                            string sqlDel = "delete * from Student where [学号]=@StuNo";
                            OleDbCommand comd = new OleDbCommand(sqlDel, conn);
                            comd.Parameters.AddWithValue("@StuNo", dataGridView1.Rows[i].Cells[1].Value);
                            int rtnCode = comd.ExecuteNonQuery();
                        }

                    }
                }
                    result = true;
                }
            return result;
这里有两种获取当前datagridview选中的行数

第一种:

 int iCount = dataGridView1.SelectedRows.Count;

第二种:

 Int32 selectedRowCount = dataGridView1.Rows.GetRowCount(DataGridViewElementStates.Selected);


这里没有删除datagirdview上的数据,是直接删除数据库的数据,然后使用datadisplay重新读取数据库中数据的

想要单纯的删除datagridview中的某行数据可以使用下面代码

                  foreach (DataGridViewRow item in dataGridView1.SelectedRows)
                    {
                        dataGridView1.Rows.RemoveAt(item.Index);
                    }

2.删除按钮

        private void btn_Delete_Click(object sender, EventArgs e)
        {
            dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; //设置datagirview属性为点击一个cell就选中整行
            try
            {
                bool DeleteResult = opera.DataDelete(dataGridView1, conn);
                if (DeleteResult)
                {
                    DataDisplay();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                conn.Close();
            }
        }


解决第一次删除总是失败的方法:

删除按钮方法中下列语句删除,将这个语句添加到DataDisplay()方法中就可以了。

     dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;




你可能感兴趣的:(C#增删改查操作Access数据库之三(数据库的删除))