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

来源:互联网 发布:防范和打击电信网络 编辑:程序博客网 时间:2024/06/06 13:27

功能:选中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;




原创粉丝点击