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

winform小程序向数据表插入的问题
插入的量大时,就挂掉了,1万条可以,10万条直接卡住,挂掉了

以下是主要代码: 怎么回事啊
C# code



public static bool OperateDatasWithTransaction(List<string> sqlList)
        { 
            OracleConnection myConnection = new OracleConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnStrOrcl"]);
            myConnection.Open();
            OracleCommand myCommand = myConnection.CreateCommand();
            OracleTransaction myTrans;
            // Start a local transaction
            myTrans = myConnection.BeginTransaction(IsolationLevel.ReadCommitted);
            // Assign transaction object for a pending local transaction
            myCommand.Connection = myConnection;
            myCommand.Transaction = myTrans;
            try
            {
                foreach (string item in sqlList)
                {
                    myCommand.CommandText = item;
                    myCommand.ExecuteNonQuery();
                }
                myTrans.Commit();
                return true;
            }
            catch (Exception)
            {
                myTrans.Rollback();
                return false;
            }
            finally
            {
                myConnection.Close();
            }





------解决方案--------------------
十万条确实要运行好一会,你就是程序i++到10万也有明显的等待
------解决方案--------------------
oracle下不知道有没有类似于sql server的bcp导入功能,如果用sql语句循环插入肯定会慢
------解决方案--------------------
用新线程后台慢慢更新.
------解决方案--------------------
调用十次OperateDatasWithTransaction,而不是一次完成。
------解决方案--------------------

------解决方案--------------------
异步,或者多线程