table1 除了多一个自动增长的主键列以外,表结构和datatable是一样的,
最好有代码示例。

解决方案 »

  1.   

    OleDbConnection conn = new OleDbConnection(connstr);
     string sqlstr = "select * from table1";
     da = new OleDbDataAdapter(sqlstr, conn);
     OleDbCommandBuilder cb = new OleDbCommandBuilder(da); DataSet ds = new DataSet();
     da.Fill(ds,"TEST");
     ds.Tables["TEST"].Merge(dt);//dt即你的内存表
     da.Update(ds,"TEST");
     ds.AcceptChanges();
      

  2.   

    jiatong1981(末日之痕)
    内存中的表和要插入的目的表列名必须要一致么?
      

  3.   

    table1 除了多一个自动增长的主键列以外,表结构和datatable是一样的,
    ===============================================================汗 没看清楚啊 个人认为应该是table1设置一个自增的主键列 datatable就不用来维护了PS:刚发的代码如果是这种情况 不能使用CommandBuilder 而需要自己写增删该的sql语句
      

  4.   

    那只能遍历内存中的表一条条插入了?
    =====================================
    使用da.Update(ds,"TEST");来更新数据库 实际上也是一条条的 只不过代码方面的开发量很小如果方便的话 你可以考虑给数据库中增加一个自增字段来充当主键 你就不用在代码中来维护哪个主键了 如果嫌麻烦 可以在数据库中设置两个字段 一个为自增的主键字段 另一个字段为你当前代码中实际维护的那个主键字段
      

  5.   

    内存中的表结够我是可以修改的
    你的意思是在读出的datatable加一个自动增长列?但是这段代码是经常执行的
    2个自动增长列肯定会冲突的
      

  6.   

    内存中的表结够我是可以修改的
    你的意思是在读出的datatable加一个自动增长列?但是这段代码是经常执行的
    2个自动增长列肯定会冲突的
    ==========================================
    我没这个意思 我看你写的table1 除了多一个自动增长的主键列以外,表结构和datatable是一样的,
    最好有代码示例。//你到底现在是数据库中有主键字段 还是内存表中有啊?我都看晕了
      

  7.   

    我的意思数据库中设置一个自增的字段为主键
    =======================================
    table1(要插入的数据库表)就是有一个自增的主键啊然后再弄一个字段和你当前的字段一样
    =============================
    在取得的datatable里加一个字段和table1的主键字段一样?(这个可以办到)
    小弟愚钝,请兄台明示!
      

  8.   

    又仔细看看lz的确描述清楚了 我自己把自己绕糊涂了…… 在此向小学语文老师say sorry
      

  9.   

    jiatong1981(末日之痕) 
    兄台 只是一时粗心, 在所难免!