Пример #1
0
        /// <summary>
        /// Delete's the course in the database
        /// </summary>
        /// <param name="course">The course to delete</param>
        public static void DeleteCourse(Course course)
        {
            try
            {
                SqlConnection  db = new SqlConnection(connectionString);
                SqlTransaction transaction;

                db.Open();

                transaction = db.BeginTransaction(IsolationLevel.RepeatableRead);
                try
                {
                    byte[] timestamp = course.getByteTimestamp();

                    SqlCommand cmd = new SqlCommand("SELECT * FROM Course C " +
                                                    "WHERE C.id_course=@id_course AND C.timestamp=@timestamp;", db, transaction);

                    cmd.Parameters.Add("@id_course", SqlDbType.Int).Value    = course.ID;
                    cmd.Parameters.Add("@timestamp", SqlDbType.Binary).Value = timestamp;

                    SqlDataReader rdr = cmd.ExecuteReader();

                    if (rdr.Read())
                    {
                        rdr.Close();

                        cmd = new SqlCommand("DELETE FROM Course " +
                                             "WHERE id_course=@id;", db, transaction);

                        cmd.Parameters.Add("@id", SqlDbType.Int).Value = course.ID;

                        cmd.ExecuteNonQuery();
                    }
                    else
                    {
                        rdr.Close();
                        throw new GrException(Messages.recommencerEdit);
                    }

                    transaction.Commit();
                }
                catch (Exception e)
                {
                    if (e is GrException)
                    {
                        throw e;
                    }
                    transaction.Rollback();
                    throw new GrException(e, Messages.errProd);
                }
                db.Close();
            }
            catch (Exception e)
            {
                if (e is GrException)
                {
                    throw e;
                }
                throw new GrException(e, Messages.errProd);
            }
        }
Пример #2
0
        /// <summary>
        /// Update the course in the database
        /// </summary>
        /// <param name="course">The course to be updated</param>
        public static void UpdateCourse(Course course)
        {
            try
            {
                SqlConnection db = new SqlConnection(connectionString);
                SqlTransaction transaction;

                db.Open();

                transaction = db.BeginTransaction(IsolationLevel.RepeatableRead);
                try
                {
                    byte[] timestamp = course.getByteTimestamp();

                    SqlCommand cmd = new SqlCommand("SELECT * " +
                                                    "FROM Course C " +
                                                    "WHERE C.id_course=@id_course AND C.timestamp=@timestamp;", db, transaction);

                    cmd.Parameters.Add("@id_course", SqlDbType.Int).Value = course.ID;
                    cmd.Parameters.Add("@timestamp", SqlDbType.Binary).Value = timestamp;

                    SqlDataReader rdr = cmd.ExecuteReader();

                    if (rdr.Read())
                    {
                        rdr.Close();
                        cmd = new SqlCommand("UPDATE Course " +
                                                    "SET name=@name, [key]=@key, active=@active " +
                                                    "WHERE id_course=@id;", db, transaction);

                        cmd.Parameters.Add("@id", SqlDbType.Int).Value = course.ID;
                        cmd.Parameters.Add("@name", SqlDbType.Char).Value = course.Name;
                        cmd.Parameters.Add("@key", SqlDbType.Char).Value = course.Key;
                        cmd.Parameters.Add("@active", SqlDbType.Bit).Value = course.Active;

                        cmd.ExecuteNonQuery();
                    }
                    else
                    {
                        rdr.Close();
                        transaction.Commit();
                        throw new GrException(Messages.recommencerEdit);
                    }

                    transaction.Commit();
                }
                catch(Exception e)
                {
                    if (e is GrException) throw e;
                    transaction.Rollback();
                    throw new GrException(e, Messages.errProd);
                }
                db.Close();
            }
            catch(Exception e)
            {
                if (e is GrException) throw e;
                throw new GrException(e, Messages.errProd);
            }
        }