C#一括アクセスデータベースの挿入

4269 ワード

C#はみんなにどんなデータをもたらしても、大きなデータをつけるだけで、効率的で、迅速で、ロットはとても頭が痛いことです.特にアクセスというデータベースに遭遇しました.これはいい方法がないので、SQLを1本1本書くしかありません.
ここでは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);
            }
        }

ターン