我在点击按钮事件中添加一行数据到DataSet中的一个表,然后更新DataSet,为什么无法保存至数据库?程序调试运行时,dataGridView中显示已添加了数据,但直接打开数据库,或再次调试运行程序时,之前添加的数据就又没了,不明白为什么,请高手指点,谢谢!        
private void toolStripButton2_Click(object sender, EventArgs e)
        {            this.dishesListTableAdapter.Insert(ListID: 2, DeskID: 2, ListCost: 0, AddTime: DateTime.Now, AddUser: "Admin");
            this.dishesListTableAdapter.Update(this.testDataSet.DishesList);
            testDataSet.DishesList.AcceptChanges();
            this.dishesListTableAdapter.Fill(this.testDataSet.DishesList);
        }

解决方案 »

  1.   

    testDataSet.DishesList.AcceptChanges();
    这行代码多余。
    你的这种写法真的很奇葩,从未见过直接在Adapter上面Inset的做法,数据新增都是对DataTable操作,然后在最后更新到数据库,你好像是实时更新,反正不是正规写法,不想花时间去研究奇葩的写法。
      

  2.   

    原因找到了,是数据库连接字符串的问题,每次调试时系统自动将数据库复制到Debug目录下,所以每次操作的是debug目录下的数据库文件(我用的时连接数据库文件),后将连接字符串数据库文件路径改为绝对路径,问题解决。
    DataSet保存数据的方法后简单,就是adapter.Updata(dataset)就可以了,之所以用adapter.insert是因为在尝试各种方法,最后写了这方法,但这样也是没错的。adapter添加数据的方法通常用dataset.table.add()就可以了,AcceptChanges()确实有点多余。