public static Solution findSolutionBySolutionID(int solutionID)
 {
     SqlConnection conn = null;
     SqlCommand cmd = null;
     try
     {
         conn = new SqlConnection(conStr);
         conn.Open();
         cmd = conn.CreateCommand();
         cmd.CommandText = "select * from solution where solution_ID=@solutionID";
         cmd.Parameters.AddWithValue("@solutionID", solutionID);
         SqlDataReader reader = cmd.ExecuteReader();
         while (reader.Read())
         {
             Solution sl = new Solution();
             sl.solutionID = reader.GetInt32(reader.GetOrdinal("solution_ID"));
             sl.solution = reader.GetString(reader.GetOrdinal("solution"));
             sl.runSolution = reader.GetString(reader.GetOrdinal("run_solution"));
             String criImgs = reader.GetString(reader.GetOrdinal("cri_img"));
             string[] simgs = criImgs.Split(',');
             foreach (string img in simgs)
             {
                 sl.criImgs.Add(img);
             }
             return sl;
         }
         return null;
     }
     finally
     {
         conn.Close();
     }
 }
 public static int deleteSolution(Solution solution)
 {
     SqlConnection conn = null;
     SqlCommand cmd = null;
     try
     {
         conn = new SqlConnection(conStr);
         conn.Open();
         cmd = conn.CreateCommand();
         cmd.CommandText = "delete from solution where solution_ID=@solutionID";
         cmd.Parameters.AddWithValue("@solutionID", solution.solutionID);
         return cmd.ExecuteNonQuery();
     }
     finally
     {
         conn.Close();
     }
 }
        public static int addSolution(Solution solution)
        {
            SqlConnection conn = null;
            SqlCommand cmd = null;
            try
            {
                conn = new SqlConnection(conStr);
                conn.Open();
                cmd = conn.CreateCommand();

                if (findSolutionBySolutionID(solution.solutionID) != null)
                    return -1;

                cmd.CommandText = "insert into solution (solution,run_solution,cri_img) values(@solution,@runSolution,@criImg)";
                // cmd.Parameters.AddWithValue("@solutionID", solution.solutionID);
                cmd.Parameters.AddWithValue("@solution", solution.solution);
                cmd.Parameters.AddWithValue("@runSolution", solution.runSolution);
                String imgs = null;
                int i = 0;
                foreach (string im in solution.criImgs)
                {
                    if (i > 0) { imgs = imgs + ","; }
                    i++;
                    imgs = imgs + im;
                }
                cmd.Parameters.AddWithValue("@criImg", imgs);

                return cmd.ExecuteNonQuery();
            }
            finally
            {
                conn.Close();
            }
        }
 public static int updateSolution(Solution solution)
 {
     SqlConnection conn = null;
     SqlCommand cmd = null;
     try
     {
         conn = new SqlConnection(conStr);
         conn.Open();
         cmd = conn.CreateCommand();
         cmd.CommandText = "update solution set solution=@solution,run_solution=@runSolution,cri_img=@criImg where solution_ID=@solutionID";
         cmd.Parameters.AddWithValue("@solutionID", solution.solutionID);
         cmd.Parameters.AddWithValue("@solution", solution.solution);
         cmd.Parameters.AddWithValue("@runSolution", solution.runSolution);
         String imgs = null;
         int i = 0;
         foreach (string im in solution.criImgs)
         {
             if (i > 0) { imgs = imgs + ","; }
             i++;
             imgs = imgs + im;
         }
         cmd.Parameters.AddWithValue("@criImg", imgs);
         return cmd.ExecuteNonQuery();
     }
     finally
     {
         conn.Close();
     }
 }
        public static int updateMessage(Message m)
        {
            Operator op = findAllByRecordID(m.recordID);

            m.solutionID = op.solution.solutionID;
            m.faultID = op.fault.faultID;

            Record r = new Record();
            r.recordID = m.recordID;
            r.carID = m.carID;
            r.time = m.time;
            r.worker = m.worker;
            r.faultID = m.faultID;
            r.solutionID = m.solutionID;
            updateRecord(r);

            Fault f = new Fault();
            f.faultID = m.faultID;
            f.fault = m.fault;
            f.faultKey = m.faultKey;
            f.faultImgs = op.fault.faultImgs;
            updateFault(f);

            Solution s = new Solution();
            s.solutionID = m.solutionID;
            s.solution = m.solution;
            s.runSolution = m.runSolution;
            s.criImgs = op.solution.criImgs;
            int i = 0;
            i = updateSolution(s);
            if (i != 0)
            {
                return 0;
            }
            else
            {
                return 1;
            }
        }
        public static List<Solution> getAllSolution()
        {
            SqlConnection conn = null;
            SqlCommand cmd = null;
            try
            {
                conn = new SqlConnection(conStr);
                conn.Open();
                cmd = conn.CreateCommand();
                cmd.CommandText = "select * from solution";
                SqlDataReader reader = cmd.ExecuteReader();
                List<Solution> solutionList = new List<Solution>();
                while (reader.Read())
                {
                    Solution s = new Solution();
                    s.solutionID = reader.GetInt32(reader.GetOrdinal("solution_ID"));
                    s.solution = reader.GetString(reader.GetOrdinal("solution"));
                    s.runSolution = reader.GetString(reader.GetOrdinal("run_solution"));
                    string solutionImgs = reader.GetString(reader.GetOrdinal("cri_img"));
                    string[] simgs = solutionImgs.Split(',');
                    foreach (string img in simgs)
                    {
                        s.criImgs.Add(img);
                    }

                    solutionList.Add(s);
                }
                return solutionList;
            }
            finally
            {
                conn.Close();
            }
        }