none
DataSet.AcceptChanges(),是提交更改物理数据库还是内存数据库呢? RRS feed

  • 问题

  • 比如我增加一行新的数据到数据库
    可我加了之后,和数据库绑定的listbox控件却没有更新数据。
    我发现,使用DataSet.AcceptChanges()语句后绑定数据库的控件就自动更新了。
    那么,到底DataSet.AcceptChanges()是更新了内存中的数据库,还是物理数据库呢?
    我想弄的更明白一点,呵呵。
    我的代码如下:
      private void button1_Click_1(object sender, EventArgs e)
            {
                usersTableAdapter.Insert(姓名TextBox.Text.ToString(), 密码TextBox.Text.ToString(), 用户类型TextBox.Text .ToString ());
                qYGLDataSet.AcceptChanges();
            }
    谢谢大家啦

    2009年6月24日 13:53

答案

  • usersTableAdapter.Insert(姓名TextBox.Text.ToString(), 密码TextBox.Text.ToString(), 用户类型TextBox.Text .ToString ());
    这句是强类型TableAdaper 上定义了一个 Insert 方法,这个方法可能是直接提交数据到数据库

    qYGLDataSet.AcceptChanges();
    是将数据集中所有行的 RowState 更新为 Unchanged, 并不是把数据提交到数据库。通过调用 DataAdapter.Update(DataSet) 方法 DataAdapter 会通过 CommandBuilder 根据每行的RowState 生成对应的 SQL语句然后提交到数据库(RowState = Unchanged 不会生成), 所以调用  DataAdapter.Update(DataSet) 之后一般都会调用 DataSet.AcceptChanges(), 以避免下次调用 Update 方法时造成数据库中数据重复或更新错误

    知识改变命运,奋斗成就人生!
    • 已标记为答案 白菜王 2009年6月25日 7:09
    2009年6月24日 15:49
    版主

全部回复

  • 你好 只是在内存中的DataSet修改了 你可以通过DataAdapter.Update方法更新到数据库中
    Denn ich gehor nur dir!坚持不懈!http://hi.baidu.com/1987raymond
    2009年6月24日 14:00
    版主
  • 那我可以理解,我的两条语句。
    usersTableAdapter.Insert(姓名TextBox.Text.ToString(), 密码TextBox.Text.ToString(), 用户类型TextBox.Text .ToString ());
    第一条是把更改写入物理数据库。
    qYGLDataSet.AcceptChanges();
    第二条是把物理数据库的更改,读入内存数据库么。

    2009年6月24日 14:25
  • 其实我是不明白,为什么我的第一条语句,没有让listbox这个控件更新,这个控件显示的还是改动前的数据库。
    而第二条语句才让listbox控件显示的数据为更新后的数据
    2009年6月24日 14:36
  • usersTableAdapter.Insert(姓名TextBox.Text.ToString(), 密码TextBox.Text.ToString(), 用户类型TextBox.Text .ToString ());
    这句是强类型TableAdaper 上定义了一个 Insert 方法,这个方法可能是直接提交数据到数据库

    qYGLDataSet.AcceptChanges();
    是将数据集中所有行的 RowState 更新为 Unchanged, 并不是把数据提交到数据库。通过调用 DataAdapter.Update(DataSet) 方法 DataAdapter 会通过 CommandBuilder 根据每行的RowState 生成对应的 SQL语句然后提交到数据库(RowState = Unchanged 不会生成), 所以调用  DataAdapter.Update(DataSet) 之后一般都会调用 DataSet.AcceptChanges(), 以避免下次调用 Update 方法时造成数据库中数据重复或更新错误

    知识改变命运,奋斗成就人生!
    • 已标记为答案 白菜王 2009年6月25日 7:09
    2009年6月24日 15:49
    版主