我是靠谱客的博主 疯狂学姐,最近开发中收集的这篇文章主要介绍C#批量插入access数据库,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

C#造福大家
不管什么数据,只要沾上大数据,效率,快速,批量 都是一件很让人头疼的事情。
尤其是遇到了Access这种数据库。
这个没有什么好的办法,只好一条一条的写SQL插入了。

在这提供2种思路。第一种是写事物去处理。这点大家都懂的。第二种是用批量更新。
很奇怪这2种方法的处理速度都差不多。都比一条一条的插入块。那看你高兴了。
如果你有更快的方法,请不要忘记了我 lqqlike@163.com.
以下是2中代码

1.用事物处理
用事物处理去循环比单独循环要快。别问为什么,因为是事物。
以下是代码,伸手党速来。

private void ExcuteListSQL(string tableName, List<List<SqlCondition>> conditionList)
{
string[] columns = conditionList[0].Select(t => t.ColumnName).ToList().ToArray();
string insertSql = DB.GetInsertSQL(tableName, columns);
insertSql = insertSql.Replace("?", "@");
using (OleDbTransaction trans = conn.BeginTransaction())
{
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.Transaction = trans;
try
{
foreach (var one in conditionList)
{
cmd.CommandText = insertSql;
one.ForEach(t =>
{
cmd.Parameters.Add(new OleDbParameter("@" + t.ColumnName, t.Value));
});
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
trans.Commit();
}
catch (Exception ex)
{
trans.Rollback();
throw ex;
}
}
}
public class SqlCondition
{
public string ColumnName { get; set; }
public object Value { get; set; }
}

2.用OleDbDataAdapter.Update 批量更新
以下是代码

public void ExcuteTableSql(string tableName, DataTable dt)
{
List<string> columnList = new List<string>();
foreach (DataColumn one in dt.Columns)
{
columnList.Add(one.ColumnName);
}
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = new OleDbCommand("select * from " + tableName, conn);
using (OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter))
{
adapter.InsertCommand = builder.GetInsertCommand();
foreach (string one in columnList)
{
adapter.InsertCommand.Parameters.Add(new OleDbParameter(one, dt.Columns[one].DataType));
}
adapter.Update(dt);
}
}

最后

以上就是疯狂学姐为你收集整理的C#批量插入access数据库的全部内容,希望文章能够帮你解决C#批量插入access数据库所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部