原文:http://blog.csdn.net/cisee/article/details/3489157

在VS2008中向一个winform project中加入一个绑定数据源的时候,IDE会自动生成一个相应的dataSet.xsd文件,这个文件的用途就是相当于封装了一层数据源,我们可以直接利用它来很方便地从数据库中读取数据,一般它会产生两个类,一个是DataSet类,另一个是Adapter类,这个类的名当然是根据数据库的表名来命名的,比如我们的数据库里面的表为test, 则产生的两个类分别为testDataSet类和testTableAdapters, Adapters类中会自动产生一个Fill方法,来读取数据源中的数据,当然我们也可以填加新的方法,但是默认的这些方法都不是向dataTable中追加数据,而是覆盖原有的数据,说得更加清楚一点,是先清空,然后再Fill这个dataTable,看了一下VS自动产生的源代码,如下:

  1. public virtual int Fill(testDataSet.testDataTable dataTable) {
  2.             this.Adapter.SelectCommand = this.CommandCollection[0];
  3.             if ((this.ClearBeforeFill == true)) {
  4.                 dataTable.Clear();
  5.             }
  6.             int returnValue = this.Adapter.Fill(dataTable);
  7.             return returnValue;
  8.         }

    发现上面有个判断语句,  if ((this.ClearBeforeFill == true)), 这就是问题产生的原因, 所以如果我们想向这个dataTable中追加数据,而不是把原有的数据清空,我们只需要将Adapters类的ClearBeforeFile属性设置为false就可以了. 即如下:

    this.testTableAdapter.ClearBeforeFill = false;

    这样就可以实现追加数据的功能了 ^_^