日期:2014-05-18  浏览次数:20726 次

求教用事务向Access数据库中插入一批数据应该怎么弄???
这段是我原本的代码,如果要改成用事务应该怎样改呢?
C# code
 string connectionString = Properties.Settings.Default.dataConnectionString;
                int i = 0;
                DateTime gendate;
                OleDbConnection conn = new OleDbConnection(connectionString);
                if (chooselistbox.Items.Count == 0)
                {
                    throw new Exception("没有数据存储");
                }
                conn.Open();
                while (i < chooselistbox.Items.Count)
                {
                    string sql = "insert into tData(fCode,fGenDate) values(?,?) ";
                    d.TryGetValue(chooselistbox.Items[i].ToString(), out gendate);
                    OleDbCommand cmd = new OleDbCommand(sql, conn);
                    cmd.Parameters.Add("?", OleDbType.VarChar, 50).Value = chooselistbox.Items[i];
                    cmd.Parameters.Add("?", OleDbType.Date).Value = gendate;
                    cmd.ExecuteNonQuery();
                    i++;
                }
                conn.Close();


------解决方案--------------------
说实话,无论你怎么做,Access都并不适合处理数十万规模的数据。事务的作用也不是“批量处理数据”,只是确保操作的原子性,换言之,你不能从使用事务中获得性能的增益。

你应该考虑迁移到SQL Server,它支持一种叫“BULK INSERT”的方式来批量插入数据。

你这属于典型的用错误的技术解决错误的问题。
------解决方案--------------------
http://www.cnblogs.com/zhouyz/articles/transaction.html