求教用事务向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