示例#1
0
        //INSERT
        public void InsertTransaction(int idsub, List <int> u, int count, int course)
        {
            string queryClass = @"INSERT INTO Class(idMatter,idCourse)
                                    VALUES( :subject , :course)";


            string queryClassSche = @"INSERT INTO ClassSchedules(idClass,schedulesid)
                                    VALUES( :idclass, :idsche)";

            string queryAve = @"INSERT INTO AverageGradeTotal(firstTrimester)
  VALUES(0) ";

            string queryGrades = @"INSERT INTO Grade(studentid,idClass,idAverage)
  VALUES( :student, :class, :average) ";

            string queryFirst = @"INSERT INTO FirstTrimester(gradeId)
  VALUES( :id)";

            string querySecond = @"INSERT INTO SecondTrimester(gradeId)
  VALUES( :id)";

            string queryThird = @"INSERT INTO ThirdTrimester(gradeId)
  VALUES( :id)";



            try
            {
                int reset;
                int i            = 1;
                int idgradetotal = DBImplementation.GetIdentityFromTable("Grade");
                System.Diagnostics.Debug.WriteLine(string.Format("{0} | Info: 1.", DateTime.Now));
                DBImplementation.ResetIdentFromTable("Grade");
                int idgradeincrement = DBImplementation.GetIncementFromTable("Grade");

                int idgrade            = idgradetotal - idgradeincrement;
                int idaveragetotal     = DBImplementation.GetIdentityFromTable("AverageGradeTotal");
                int idaverageincrement = DBImplementation.GetIncementFromTable("AverageGradeTotal");
                DBImplementation.ResetIdentFromTable("AverageGradeTotal");
                int       idaverage = idaveragetotal - idaverageincrement;
                int       students  = 0;
                DataTable dt        = new DataTable();
                dt = SelectStudents(course);
                foreach (DataRow d in dt.Rows)
                {
                    students++;
                }
                System.Diagnostics.Debug.WriteLine(string.Format("{0} | Info: Start Add Class.", DateTime.Now));
                List <OracleCommand>     cmds       = DBImplementation.CreateNBasicCommands(count + (students * 7));
                List <OracleParameter[]> parameters = new List <OracleParameter[]>();

                int id = DBImplementation.GetIdentityFromTable("Class");
                DBImplementation.ResetIdentFromTable("Class");

                cmds[0].CommandText = queryClass;
                parameters.Add(new OracleParameter[2]);
                parameters[0][0] = new OracleParameter(":subject", idsub);
                parameters[0][1] = new OracleParameter(":course", course);
                cmds[0].Parameters.AddRange(parameters[0]);

                System.Diagnostics.Debug.WriteLine(string.Format("{0} | Info: addclassforeach", DateTime.Now));


                foreach (var lis in u)
                {
                    cmds[i].CommandText = queryClassSche;

                    parameters.Add(new OracleParameter[2]);
                    parameters[i][0] = new OracleParameter(":idclass", id);
                    parameters[i][1] = new OracleParameter(":idsche", lis);
                    cmds[i].Parameters.AddRange(parameters[i]);
                    i++;
                }
                System.Diagnostics.Debug.WriteLine(string.Format("{0} | Info: addclassforeach", DateTime.Now));
                foreach (DataRow d in dt.Rows)
                {
                    idaverage           = idaverage + idaverageincrement;
                    cmds[i].CommandText = queryAve;
                    parameters.Add(new OracleParameter[0]);
                    i++;
                    System.Diagnostics.Debug.WriteLine(string.Format("{0} | Info: addclassforeach", DateTime.Now));
                    for (int k = 0; k < 3; k++)
                    {
                        switch (k)
                        {
                        case 0:
                            System.Diagnostics.Debug.WriteLine(string.Format("{0} | Info: addclassforeach", DateTime.Now));
                            idgrade             = idgrade + idgradeincrement;
                            cmds[i].CommandText = queryGrades;
                            parameters.Add(new OracleParameter[3]);
                            parameters[i][0] = new OracleParameter(":student", d[0].ToString());
                            parameters[i][1] = new OracleParameter(":class", id);
                            parameters[i][2] = new OracleParameter(":average", idaverage);
                            cmds[i].Parameters.AddRange(parameters[i]);
                            i++;

                            cmds[i].CommandText = queryFirst;
                            parameters.Add(new OracleParameter[1]);
                            parameters[i][0] = new OracleParameter(":id", idgrade);
                            cmds[i].Parameters.AddRange(parameters[i]);
                            i++;

                            break;

                        case 1:
                            System.Diagnostics.Debug.WriteLine(string.Format("{0} | Info: addclassforeach", DateTime.Now));
                            idgrade             = idgrade + idgradeincrement;
                            cmds[i].CommandText = queryGrades;
                            parameters.Add(new OracleParameter[3]);
                            parameters[i][0] = new OracleParameter(":student", d[0].ToString());
                            parameters[i][1] = new OracleParameter(":class", id);
                            parameters[i][2] = new OracleParameter(":average", idaverage);
                            cmds[i].Parameters.AddRange(parameters[i]);
                            i++;

                            cmds[i].CommandText = querySecond;
                            parameters.Add(new OracleParameter[1]);
                            parameters[i][0] = new OracleParameter(":id", idgrade);
                            cmds[i].Parameters.AddRange(parameters[i]);
                            i++;
                            break;

                        case 2:
                            System.Diagnostics.Debug.WriteLine(string.Format("{0} | Info: addclassforeach", DateTime.Now));
                            idgrade             = idgrade + idgradeincrement;
                            cmds[i].CommandText = queryGrades;
                            parameters.Add(new OracleParameter[3]);
                            parameters[i][0] = new OracleParameter(":student", d[0].ToString());
                            parameters[i][1] = new OracleParameter(":class", id);
                            parameters[i][2] = new OracleParameter(":average", idaverage);
                            cmds[i].Parameters.AddRange(parameters[i]);
                            i++;
                            cmds[i].CommandText = queryThird;
                            parameters.Add(new OracleParameter[1]);
                            parameters[i][0] = new OracleParameter(":id", idgrade);
                            cmds[i].Parameters.AddRange(parameters[i]);
                            i++;
                            break;
                        }
                    }
                }
                DBImplementation.ExecuteNBasicCommand(cmds);
                System.Diagnostics.Debug.WriteLine(string.Format("{0} | Info: Add Class by" + Session.SessionCurrent.ToString() + " Object Send: {1}", DateTime.Now));
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(string.Format("{0} | Error:  Could not Add Class({1}).", DateTime.Now, ex.Message));
            }
        }