泛型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;
}
{
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;
}
如果是这样的话,我觉得
首先,确定执行前,LIST里的数据是不是没有少(是不是有什么判断条件将数据删除了)
其次,将拼SQL语句的那段改成,用 parmaters 来传参~~ 同时NULL 改成DBnull.Value