日期:2014-05-17  浏览次数:21075 次

把 Dataset 数据放到 Access
Access信息:
  表名: staff_info

  编号 姓名 性别 出生日期 籍贯 联系电话 联系地址 

  1 张三 男 1962-10 吉林长春 123456 ABC
  2 李四 女 2001-02 江苏南京 123456 ABC

  Excel信息:
   
  1 王二 男 1962-10 吉林长春 123456 ABC
  2 张五 女 2001-03 江苏南京 145568 ABC

  System.Data.DataSet ds1 = new DataSet();
  ds1 = ExcelToExcel("E:\\aaa.xls", "sheet3"); //ds1中为Excel信息,见上表


  string AccessPath = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + System.Windows.Forms.Application.StartupPath+ "\\DB_Test.mdb";
  string sql = "SELECT * FROM staff_info";
  OleDbConnection connAccess = new OleDbConnection(AccessPath);
  connAccess.Open();
  OleDbDataAdapter daAccess = new OleDbDataAdapter(sql, connAccess);
  System.Data.DataSet ds2 = new DataSet(); 
  daAccess.Fill(ds2); //ds2中为Access信息,见上表
   
  .
  .
  .
  // ds2 = ds1.Copy();
  // daAccess.Update(ds2);
  daAccess.Update(ds1);


最终目的是想用 ds1(excel内容) 去 Update ds2(Access内容),请高手们补全省略的地方,简单的说就是用 ds1 去更新 Access, 网上方法基本上都试了,要么不更新,要么老报错,所以链接就免发了。搞了一天多,都快崩溃了,小弟就40分,测试成功分将全部奉上!谢各位了!


------解决方案--------------------
你那个update是怎么update的呢?
如果是把xml的数据增加到access,那不就是简单的往数据库中插入数据么?
access跟sql插入操作是一样的
------解决方案--------------------
C# code
daAccess.Update(ds1,Tables[0]);

------解决方案--------------------
主要调用dataSet.getChanges();OledbDataAdapter.update(),OledbDataAdapter.InsertCommand=command,OledbDataAdapter.UpdateCommand=command
希望对你有用
------解决方案--------------------
for 循环里 用 insert 连个 Transaction 都没有了, 如果有一个失败了,你的数据岂不是 不正确了。