泛型list集合中数据丢失位置不定。private bool InsertPrescription(List<Prescription> list, string strSql)
        {
            bool isValid = true;
            string connectionString = this.GetOrclConnectionString();
            string insertSql = string.Empty;            using (OracleConnection connection = new OracleConnection(connectionString))
            {
                connection.Open();
                OracleCommand com = connection.CreateCommand();
                OracleTransaction transaction = connection.BeginTransaction();
                com.Connection = connection;
                com.Transaction = transaction;
                com.CommandType = CommandType.Text;                string strLogContents = string.Empty;                try
                {
                    for (int i = 0; i < list.Count; i++)
                    {
                        insertSql = string.Format(strSql, list[i].DrugSelectCd, list[i].PatientCd, list[i].PatientTimes, list[i].SpecialFlg == "" ? "NULL" : "'" + list[i].SpecialFlg + "'",
                            list[i].PatientName, list[i].Birthday == "" ? "NULL" : "to_date('" + list[i].Birthday + "','yyyy-mm-dd hh24:mi:ss')", list[i].Sex == "" ? "NULL" : list[i].Sex, "to_date('" + list[i].MakePecDateTime + "','yyyy-mm-dd hh24:mi:ss')",
                            list[i].FloorNo == "" ? "NULL" : list[i].FloorNo, list[i].MachineCd == "" ? "NULL" : list[i].MachineCd, list[i].DrugOutCd == "" ? "NULL" : list[i].DrugOutCd,
                            list[i].DrugSerial == "" ? "NULL" : list[i].DrugSerial, list[i].PackageSerial == "" ? "NULL" : list[i].PackageSerial, list[i].DrugCd == "" ? "NULL" : list[i].DrugCd,
                            list[i].DrugName == "" ? "NULL" : list[i].DrugName, list[i].DrugSpec == "" ? "NULL" : list[i].DrugSpec, list[i].DrugUseDays == "" ? "0" : list[i].DrugUseDays,
                            list[i].DrugUseDose == "" ? "NULL" : list[i].DrugUseDose, list[i].DrugDoseUnit == "" ? "NULL" : list[i].DrugDoseUnit, list[i].DrugNumber == "" ? "0" : list[i].DrugNumber,
                            list[i].DrugUnit == "" ? "NULL" : list[i].DrugUnit, list[i].Notes == "" ? "NULL" : list[i].Notes, list[i].EnableCurrFloor, list[i].PositionCd == "" ? "NULL" : list[i].PositionCd);                        strLogContents += insertSql;
                        strLogContents += Environment.NewLine;                        com.CommandText = insertSql;
                        com.ExecuteNonQuery();
                    }                    transaction.Commit();
                }
                catch (Exception)
                {
                    isValid = false;
                    transaction.Rollback();
                    throw;
                }
            }
            return isValid;
        }

解决方案 »

  1.   

    http://swtsunshine.blog.163.com/blog/static/11163871200881934040279/
      

  2.   

    看了下楼主的代码,你的意思是说这个LIST中有N多数据,但是最后执行成功后,丢失了部分数据?
    如果是这样的话,我觉得
    首先,确定执行前,LIST里的数据是不是没有少(是不是有什么判断条件将数据删除了)
    其次,将拼SQL语句的那段改成,用 parmaters 来传参~~ 同时NULL 改成DBnull.Value