大家好,
上网查了很多信息,大家要么是一条一条insert,要么是用update()方法。
由于数据量较大,所以我想用update()方法批量导入。已经在ACCESS中建立好了与DataTable结构一样的表。 OleDbConnection conn1 = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source='D:\\练习.accdb'");
conn1.Open();
DataTable DT1 = new DataTable();
OleDbDataAdapter adapater1 = new OleDbDataAdapter("select * from [ACCESS中的表]", conn1);
OleDbCommandBuilder builder = new OleDbCommandBuilder(adapater1);
adapater1.Fill(DT1);
DT1 = DS.Tables[0].Copy();//DS.Tables[0]就是已经存在的内存表
adapater1.Update(DT1);执行后就会报错“违反并发性: UpdateCommand 影响了预期 1 条记录中的 0 条。”我已经建立了主键,并且内存表里没有空值。在此我想请教大家,有没有像往SQL里面批量导入时的BCP一样的方法,不会有太多限制,只专注于批量导入的方法。谢谢大家。
上网查了很多信息,大家要么是一条一条insert,要么是用update()方法。
由于数据量较大,所以我想用update()方法批量导入。已经在ACCESS中建立好了与DataTable结构一样的表。 OleDbConnection conn1 = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source='D:\\练习.accdb'");
conn1.Open();
DataTable DT1 = new DataTable();
OleDbDataAdapter adapater1 = new OleDbDataAdapter("select * from [ACCESS中的表]", conn1);
OleDbCommandBuilder builder = new OleDbCommandBuilder(adapater1);
adapater1.Fill(DT1);
DT1 = DS.Tables[0].Copy();//DS.Tables[0]就是已经存在的内存表
adapater1.Update(DT1);执行后就会报错“违反并发性: UpdateCommand 影响了预期 1 条记录中的 0 条。”我已经建立了主键,并且内存表里没有空值。在此我想请教大家,有没有像往SQL里面批量导入时的BCP一样的方法,不会有太多限制,只专注于批量导入的方法。谢谢大家。
做法: 表不要建主键,不使用 OleDbCommandBuilder 自动生成sql,自己写.然后用适配器Update即可.