日期:2014-05-17  浏览次数:20455 次

求助:事务提交两次后报错
数据库是Oracle,数据量较大,就先做了一个demo测试。
数据给十万条,打算每一千条提交一次。设置断点在txn.Commit();
能够Commit两次后(能够插入两次结果就是2000个条记录)就报错:System.InvalidOperationException: 对象的当前状态使该操作无效。

希望大家给帮帮忙,程序是winfrom的。在线等好心人解答,代码很简单如下:

   在 Oracle.DataAccess.Client.OracleTransaction.Commit()

public void InsertValueTest()
        {
            OracleCommand cmd = new OracleCommand();
            cmd.Connection = conn;
            //启用事务
            OracleTransaction txn = conn.BeginTransaction(IsolationLevel.ReadCommitted);
            cmd.Transaction = txn;

            try
            {
                for (int i = 1; i < 100001; i++)
                {
                    cmd.CommandText = @"insert into /*+apppend*/t_channel_value_l0 values (" + i + "," + (i+1) + "," + (i+2) + ")";
                    cmd.CommandType = CommandType.Text;
                    cmd.ExecuteNonQuery();
                    if (i % 1000 == 0)
                    {
                        try
                        {
                            txn.Commit(); //---------这里设置断点,第二次走过以后直接进catch
                        }