当前位置:编程学习 > C#/ASP.NET >>

DataGridView中删除一行数据后,为什么数据表中不更新

在一个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# DataGridView SQL --------------------编程问答-------------------- 你删除的是数据库,不是dg中的数据,要么刷新整个dg,要么写代码移除该记录 --------------------编程问答--------------------  删除后 重新绑定dataGridView --------------------编程问答--------------------  if (DB.ExecuteNonSql(sql))
这个方法里没有删除成功 --------------------编程问答-------------------- 是不是获取当前行时候出了问题? 也许 dataGridView1.CurrentRow.Index=-1 --------------------编程问答-------------------- 要么代码区Remove掉DataGridView中删除的行,要么重新执行获取数据再绑定DataGridView --------------------编程问答--------------------
引用 2 楼 dr592112441 的回复:
 删除后 重新绑定dataGridView

我已经重新绑定DataGridView了,代码中的ShowData()方法就是用来绑定数据的 --------------------编程问答--------------------
引用 1 楼 juyangjia 的回复:
你删除的是数据库,不是dg中的数据,要么刷新整个dg,要么写代码移除该记录


我用SQL语句直接操作数据库,应该是没问题的啊?而且我在执行删除语句之后,重新绑定数据的时候,显示结果是DataGridView中的数据行已经删除了,奇怪的是,打开数据表之后里面的数据却没有删除掉,不知道哪里出错了.
在程序的执行过程中,也没有出现异常,用断点查看所获取到的学号sno和sql语句都没有问题的,到底是怎么回事啊 --------------------编程问答-------------------- 希望各路大神高手们指点一下小弟 --------------------编程问答-------------------- 确定DB.ExecuteNonSql(sql)里面没有问题?当真正在数据库删除数据后,再刷新一下datagridview就行了
--------------------编程问答-------------------- ExecuteNonSql(sql) 这句,你跟进去看一下,返回行数。
你的结果应该是0,但是返回为true,
或者你把SQL截出来,放ACCESS上执行看一下。
如果上面的你都没有问题,你会不会看错数据库了。 --------------------编程问答-------------------- 应该是你重新绑定数据的时候,绑定的是以前那个数据集。而不是重新查询得到的数据集。
你把ShowData()方法里的代码发上来看下。 --------------------编程问答--------------------
引用 11 楼 lishan777 的回复:
应该是你重新绑定数据的时候,绑定的是以前那个数据集。而不是重新查询得到的数据集。
你把ShowData()方法里的代码发上来看下。


 private void ShowData()
        {
            DataTable dt = DB.GetDataSet("select * from 学生表").Tables[0];
            this.dataGridView1.DataSource = dt;
            this.dataGridView1.Refresh();
        } --------------------编程问答-------------------- 噢。那就不是绑定问题。。再找找其它原因吧 --------------------编程问答-------------------- 谁能帮我解决一下吗? --------------------编程问答-------------------- 重新绑定数据源就好了 --------------------编程问答-------------------- 楼主写事件的方式有待商榷。这种取值方式不对,楼主应该取DataGridView当前选中的行中的数据,确定删除成功后,刷新DataGridView中的数据就ok了 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 学好=后面那个不是要单引么?菜鸟,不知道有木有说错 --------------------编程问答-------------------- 打广告的很讨厌。不让人家用控件,只让人家用你的东西,你提供下载源代码吗?

这种原本讨论技术的帖子,被搞得像贴上狗皮膏药一样的了。 --------------------编程问答--------------------
引用 18 楼 caoxianbing 的回复:
学好=后面那个不是要单引么?菜鸟,不知道有木有说错


哪个学号是个字段名,不需要加引号的!还是谢谢你的回复! --------------------编程问答-------------------- 我大概知道你的原因,代码删除的是debug文件夹中的数据库

你的代码是删除数据库中的记录,而且也在datagridview中反映出来了,说明没问题,那么为什么数据库中看不到删除的变化呢,我觉得可能的原因是 你看的是哪个数据库,是程序目录中的数据库,还是debug中的数据库,你调试阶段是删除的debug中的数据,程序目录中的数据库是不会变的,你看是不是看错了。

另外,我奇怪一个问题,你用代码删除了数据库中的数据,是怎么反映到datagridview中去的,按理说,要重新把数据库中的数据 fill到datagridview的数据源中,这样才能在datagridview中看到数据变化,而你贴出来的代码中没有fill数据源的操作(也就是重新读取数据库)
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,