跟SQLServer批量insert步骤一样:
1,构造DataTable
/// <summary>
/// 构造Table
/// </summary>
/// <returns></returns>
public DataTable BuildTable()
{
try
{
DataTable dt = new DataTable("Person");//与目标表名一致
DataColumn ID = dt.Columns.Add("ID", typeof(String));
ID.AllowDBNull = false;//空值
ID.Unique = true;//唯一
dt.Columns.Add("ksj", typeof(String));
return dt;
}
catch (Exception ex)
{
return null;
}
}
2,封装并为Table赋值
DataTable dt =BuildTable();
for (int i = 0; i < 10000; i++)
{
DataRow dr = dt.NewRow();
dr["ID"] = i.ToString();
dr["ksj"] = "pil";
dt.Rows.Add(dr);
}
3,OleDbDataAdapter批量提交Table
public void insert(DataTable dt1)
{
try
{
GetOleDbConn();
OpenConn();
OleDbCommand cmd2 = new OleDbCommand("insert into Person(ID,ksj)) values (@ID,@ksj)");//加@等同于转义关键字,最好加
OleDbDataAdapter adapt = new OleDbDataAdapter("select * from Person", oleConn);// 把目标表数据拿到OleDbDataAdapter
OleDbCommandBuilder OleDbCmdBud = new OleDbCommandBuilder(adapt);
OleDbParameter ID = new OleDbParameter("@ID", OleDbType.VarWChar, 255);
OleDbParameter Names = new OleDbParameter("@ksj", OleDbType.VarWChar, 255);
adapt.Fill(dt1);
adapt.SelectCommand.Parameters.Add(ID);
adapt.SelectCommand.Parameters.Add(Names);
adapt.SelectCommand.Parameters["@ID"].SourceColumn = "ID";
adapt.SelectCommand.Parameters["@ksj"].SourceColumn = "ksj";
adapt.UpdateCommand = OleDbCmdBud.GetUpdateCommand();
if (dt1 != null)
{
adapt.Update(dt1);//这里开始提交了
}
}
catch (Exception ex)
{
ex.Message; }
}
万条数据可控制在秒级。