/// <summary> /// 执行事务,不主动提交 /// </summary> /// <param name="operations"></param> public bool ExecuteTranNoCommit(IDBOperation[] operations) { if (sqlHelper.BeginTransaction()) { try { foreach (IDBOperation op in operations) { op.Execute(sqlHelper); } return(true); } catch (Exception) { sqlHelper.RollBackTransaction(); this.Close(); return(false); } } else { LogTool.LogWriter.WriteError("开启数据库事务失败。"); throw new Exception("开启数据库事务失败。"); } }
public bool SaveInfo(RecordInfo info, GwType type) { string sql = @" INSERT INTO RecordInfo (FGWID,FAssemblyID,FBar,FCustBar,FDate) values (@gwID,@assemblyID,@codeRule,@custBar,GETDATE());select SCOPE_IDENTITY();"; string sql1 = @"INSERT INTO RecordInfoEntry (FInterID,FCode) VALUES(@Id,@codeRule) "; string sql2 = @"INSERT INTO RecordInfoEntry1 (FInterID,FValue) VALUES(@Id,@value) "; string update = @"UPDATE RecordInfo SET FCustBar = @cust WHERE FBar = @bar"; string sql3 = @"select FBar from RecordInfo where FCustBar = @cust"; using (var conn = new DbHelperSQL(config).GetConnection()) { conn.Open(); SqlTransaction tran = conn.BeginTransaction(); try { if (type == GwType.OP70) // 绑定客户条码 { if (!string.IsNullOrEmpty(info.FBar) && !string.IsNullOrEmpty(info.FCustBar)) { SqlCommand up1 = new SqlCommand(update, conn, tran); up1.Parameters.AddWithValue("@cust", info.FCustBar); up1.Parameters.AddWithValue("@bar", info.FBar); up1.ExecuteNonQuery(); } } else if (type == GwType.OP80) { if (!string.IsNullOrEmpty(info.FCustBar)) { info.FBar = conn.QuerySingleOrDefault <string>(sql3, new { cust = info.FCustBar }); } } SqlCommand cmd = new SqlCommand(sql, conn, tran); cmd.Parameters.AddWithValue("@gwID", info.FGWID); cmd.Parameters.AddWithValue("@assemblyID", info.FAssemblyID); cmd.Parameters.AddWithValue("@codeRule", info.FBar); cmd.Parameters.AddWithValue("@custBar", info.FCustBar); long id = Convert.ToInt64(cmd.ExecuteScalar()); // 零件条码 if (info.entries != null) { if (info.entries.Any()) { foreach (var l in info.entries) { SqlCommand cmd1 = new SqlCommand(sql1, conn, tran); cmd1.Parameters.AddWithValue("@Id", id); cmd1.Parameters.AddWithValue("@codeRule", l.FCode); cmd1.ExecuteNonQuery(); } } } // 气检数据 if (info.entries1 != null) { if (info.entries1.Any()) { foreach (var l in info.entries1) { SqlCommand cmd1 = new SqlCommand(sql2, conn, tran); cmd1.Parameters.AddWithValue("@Id", id); cmd1.Parameters.AddWithValue("@value", l.FVaule); cmd1.ExecuteNonQuery(); } } } tran.Commit(); return(true); } catch (Exception ex) { log.Error(ex.Message); tran.Rollback(); return(false); } } #endregion }