C#一括アクセスデータベースの挿入
4269 ワード
C#はみんなにどんなデータをもたらしても、大きなデータをつけるだけで、効率的で、迅速で、ロットはとても頭が痛いことです.特にアクセスというデータベースに遭遇しました.これはいい方法がないので、SQLを1本1本書くしかありません.
ここでは2つの考え方を提供します.一つ目は物事を書いて処理することです.この点はみんな知っている.2つ目は一括更新です.この2つの方法の処理速度があまり差がないのは不思議だ.1つ1つの挿入ブロックよりも.それは君が喜んでいるようだ.もっと早い方法があれば、私を忘れないでください[email protected].以下は2のコードです
1.モノで処理するモノで処理するサイクルは、単独でサイクルするよりも速い.なぜなら、物事だからだ.以下はコードで、手を伸ばしてすぐに来ます.
2.OleDbDataAdapterを使用する.Update一括更新以下はコード
ターン
ここでは2つの考え方を提供します.一つ目は物事を書いて処理することです.この点はみんな知っている.2つ目は一括更新です.この2つの方法の処理速度があまり差がないのは不思議だ.1つ1つの挿入ブロックよりも.それは君が喜んでいるようだ.もっと早い方法があれば、私を忘れないでください[email protected].以下は2のコードです
1.モノで処理するモノで処理するサイクルは、単独でサイクルするよりも速い.なぜなら、物事だからだ.以下はコードで、手を伸ばしてすぐに来ます.
private void ExcuteListSQL(string tableName, List> 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);
}
}
ターン