在一个WinForm程序中,我在DataGridView控件中删除了一条记录之后,再次刷新后,DataGridView控件中显示数据已经成功删除了,但是打开后台ACCESS数据表之后,发现数据根本没有被删除,我想请问一下,这是怎么回事呀,谢谢了!
 private void 删除学生ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            string sno = dataGridView1.Rows[dataGridView1.CurrentCellAddress.Y].Cells["学号"].Value.ToString();
            string sql = "delete from 学生表 where 学号='"+sno+"'";            if (MessageBox.Show("你真的要删除该学生信息吗?", "删除提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                if (DB.ExecuteNonSql(sql))
                {
                    MessageBox.Show("学生信息已经删除", "信息提示");
                    ShowData();
                }
                else
                {
                    MessageBox.Show("学生信息删除失败", "信息提示");
                }
            }
        }C#DataGridViewSQL

解决方案 »

  1.   

    你删除的是数据库,不是dg中的数据,要么刷新整个dg,要么写代码移除该记录
      

  2.   

     删除后 重新绑定dataGridView
      

  3.   

     if (DB.ExecuteNonSql(sql))
    这个方法里没有删除成功
      

  4.   

    是不是获取当前行时候出了问题? 也许 dataGridView1.CurrentRow.Index=-1
      

  5.   

    要么代码区Remove掉DataGridView中删除的行,要么重新执行获取数据再绑定DataGridView
      

  6.   

    我已经重新绑定DataGridView了,代码中的ShowData()方法就是用来绑定数据的
      

  7.   


    我用SQL语句直接操作数据库,应该是没问题的啊?而且我在执行删除语句之后,重新绑定数据的时候,显示结果是DataGridView中的数据行已经删除了,奇怪的是,打开数据表之后里面的数据却没有删除掉,不知道哪里出错了.
    在程序的执行过程中,也没有出现异常,用断点查看所获取到的学号sno和sql语句都没有问题的,到底是怎么回事啊
      

  8.   

    确定DB.ExecuteNonSql(sql)里面没有问题?当真正在数据库删除数据后,再刷新一下datagridview就行了
      

  9.   

    ExecuteNonSql(sql) 这句,你跟进去看一下,返回行数。
    你的结果应该是0,但是返回为true,
    或者你把SQL截出来,放ACCESS上执行看一下。
    如果上面的你都没有问题,你会不会看错数据库了。
      

  10.   

    应该是你重新绑定数据的时候,绑定的是以前那个数据集。而不是重新查询得到的数据集。
    你把ShowData()方法里的代码发上来看下。
      

  11.   


     private void ShowData()
            {
                DataTable dt = DB.GetDataSet("select * from 学生表").Tables[0];
                this.dataGridView1.DataSource = dt;
                this.dataGridView1.Refresh();
            }
      

  12.   

    楼主写事件的方式有待商榷。这种取值方式不对,楼主应该取DataGridView当前选中的行中的数据,确定删除成功后,刷新DataGridView中的数据就ok了
      

  13.   

    我大概知道你的原因,代码删除的是debug文件夹中的数据库你的代码是删除数据库中的记录,而且也在datagridview中反映出来了,说明没问题,那么为什么数据库中看不到删除的变化呢,我觉得可能的原因是 你看的是哪个数据库,是程序目录中的数据库,还是debug中的数据库,你调试阶段是删除的debug中的数据,程序目录中的数据库是不会变的,你看是不是看错了。另外,我奇怪一个问题,你用代码删除了数据库中的数据,是怎么反映到datagridview中去的,按理说,要重新把数据库中的数据 fill到datagridview的数据源中,这样才能在datagridview中看到数据变化,而你贴出来的代码中没有fill数据源的操作(也就是重新读取数据库)