title: c# System.InvalidOperationException: This OracleTransaction has completed; it is no longer usable
body: <p>i have the following error:</p>
  
  <pre><code>   System.InvalidOperationException: This OracleTransaction has completed; it is no longer usable
  </code></pre>
  
  <p>trying to make an insert into the db </p>
  
  <p>here is the code:</p>
  
  <pre><code>    OracleTransaction myTrans = null;   
      OracleCommand cmd = new OracleCommand("INSERT INTO ZTMP_SAM_TB_ELAB_PDR " + 
      "  VALUES (:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14)", connection);
      myTrans = connection.BeginTransaction();
      cmd.Transaction = myTrans; 
      /*
      ( :facilityid,:taxid,
      :plantcode,:capdr,:fullmetkeym2,
      :corrmetidm2,:stopreadingm2,
      :corrstopreadm2,:fullmetkeym1,
      :corrmetidm1,:stopreadingm1,:corrstopreadm1,
      :stopreadtimem2,:stopreadtimem1)
      */
  
      file = new System.IO.StreamReader(path+FileUpload1.FileName);
      while((line = file.ReadLine()) != null)
      {
         string[] split = line.Split(',');
  
  
         cmd.Parameters.Add("1", OracleType.VarChar, 64).Value = split[0];
         cmd.Parameters.Add("2", OracleType.VarChar, 64).Value = "";
         cmd.Parameters.Add("3", OracleType.VarChar, 64).Value = "";
         cmd.Parameters.Add("4", OracleType.Number).Value = Convert.ToInt32(split[1]);
         cmd.Parameters.Add("5", OracleType.VarChar, 64).Value = split[6];
         cmd.Parameters.Add("6", OracleType.VarChar, 64).Value = split[7];
         cmd.Parameters.Add("7", OracleType.Number).Value = Convert.ToInt32(split[8]);
         cmd.Parameters.Add("8", OracleType.Number).Value = Convert.ToInt32(split[9]);
         cmd.Parameters.Add("9", OracleType.VarChar, 80).Value = split[2];
         cmd.Parameters.Add("10", OracleType.VarChar, 80).Value = split[3];
         cmd.Parameters.Add("11", OracleType.Number).Value = Convert.ToInt32(split[4]);
         cmd.Parameters.Add("12", OracleType.Number).Value = Convert.ToInt32(split[5]);
         DateTime date1,date2;
  
         DateTime.TryParseExact(split[10], "dd/MM/yyyy", null, System.Globalization.DateTimeStyles.None, out date1);
         DateTime.TryParseExact(split[11], "dd/MM/yyyy", null, System.Globalization.DateTimeStyles.None, out date2);
  
         cmd.Parameters.Add("13", OracleType.DateTime).Value = date1;
         cmd.Parameters.Add("14", OracleType.DateTime).Value = date2;
        try
          {
             cmd.ExecuteNonQuery();
  
             myTrans.Commit();    
          }   
         catch(Exception ex){
  
          myTrans.Rollback(); 
          Label1.Text = ex.Message;
          //"Si e' verificato un errore nell'inserimento dei dati nella tabella ZTMP_SAM_TB_ELAB_PDR";
          }
         /*Per ogni elemento esegui l'insert*/
      }
  </code></pre>