OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = new OleDbCommand("select empid,eduyear,fromdate,todate from EduScoreDiscount",con);
         OleDbCommandBuilder custCB = new OleDbCommandBuilder(adapter);   //这一句放下来。
         adapter.InsertCommand = custCB.GetInsertCommand();
DataSet dss = new DataSet();
con.Open();
adapter.Fill(dss);
dss.Merge(ds,true);                  //放到这一行的后面。
adapter.Update(dss);
con.Close();请确保数据库有主键。
兄弟你够粗心。^_^

解决方案 »

  1.   

    OleDbDataAdapter adapter = new OleDbDataAdapter();
    adapter.SelectCommand = new OleDbCommand("select id,name from table1",oleDbConnection1);
    OleDbCommandBuilder custCB = new OleDbCommandBuilder(adapter);
    adapter.InsertCommand = custCB.GetInsertCommand();
    DataSet dss = new DataSet();
    oleDbConnection1.Open();
    //这句是关键
    adapter.TableMappings.Add("Table","table1");
    //
    adapter.Fill(dss,"Table1");
    DataSet ds=new DataSet();
    DataTable dt=new DataTable("Table1");
    dt.Columns.Add("id",typeof(int));
    dt.Columns.Add("name",typeof(string));
    dt.Rows.Add(new object[]{1,"aaa"});
    dt.Rows.Add(new object[]{2,"bbb"});
    ds.Tables.Add(dt);
    dss.Merge(ds,true);
    adapter.Update(dss);
    oleDbConnection1.Close();
      

  2.   

    我的目的是要把DS中的數據插入到數據庫中(DS為一存在的數據集﹐有多條數據)﹐應該怎么辦?
      

  3.   

    dss.Merge(ds,true);   ??????
    2个DataSet结构不同吗??
    先在数据库搞一张相同的表再填充,再合并,再更新。
    数据库的表必须有主键。
      

  4.   

    跟踪调试一下,看看Merge的时候数据是否进到了表里头,并且看一看DataRow的状态。
    如果进了的话,就是adapter这里的问题。
    请参考我的第一个回答。
    并且
    adapter.SelectCommand = new OleDbCommand("select empid,eduyear,fromdate,todate from EduScoreDiscount",con);
    改成
    adapter.SelectCommand = new OleDbCommand("select * from EduScoreDiscount",con);
    试一下。