示例#1
0
 // ObjectDataSource kräver att en Delete-metod
 /// <summary>
 /// Tar bort specifierad comment ur databasen.
 /// </summary>
 /// <param name="comment">Kontaktuppgift som ska tas bort.</param>
 public void DeleteComment(Comment comment)
 {
     // med en parameter av typen Member.
     CommentDAL.DeleteComment(comment.CommentId);
 }
示例#2
0
        /// <summary>
        /// Uppdaterar en kunds kontaktuppgifter i tabellen Post.
        /// </summary>
        /// <param name="member">KOntaktuppgift som ska uppdateras.</param>
        public void UpdateComment(Comment comment)
        {
            // Skapar ett anslutningsobjekt.
            using (MySqlConnection conn = CreateConnection())
            {
                try
                {
                    // Skapar och initierar ett SqlCommand-objekt som används till att
                    // exekveras specifierad lagrad procedur.
                    MySqlCommand cmd = new MySqlCommand("app.uspUpdateComment", conn);
                    cmd.CommandType = CommandType.StoredProcedure;

                    // Lägger till de paramterar den lagrade proceduren kräver. Använder här det effektiva sätttet att
                    // göra det på - något "svårare" men ASP.NET behöver inte "jobba" så mycket.
                    cmd.Parameters.Add("@CommentId", MySqlDbType.Int32, 4).Value = comment.CommentId;
                    cmd.Parameters.Add("@PostId", MySqlDbType.Int32, 4).Value = comment.PostId;
                    cmd.Parameters.Add("@MemberId", MySqlDbType.Int32, 4).Value = comment.MemberId;
                    cmd.Parameters.Add("@Value", MySqlDbType.VarChar, 500).Value = comment.Value;

                    // Öppnar anslutningen till databasen.
                    conn.Open();

                    // Den lagrade proceduren innehåller en UPDATE-sats och returnerar inga poster varför metoden
                    // ExecuteNonQuery används för att exekvera den lagrade proceduren.
                    cmd.ExecuteNonQuery();
                }
                catch
                {
                    // Kastar ett eget undantag om ett undantag kastas.
                    throw new ApplicationException(GenericErrorMessage);
                }
            }
        }
示例#3
0
 /// <summary>
 /// Spara en kontaktuppgift i databasen.
 /// </summary>
 /// <param name="member">KOntaktuppgifter som ska sparas.</param>
 public void SaveComment(Comment comment)
 {
     if (comment.IsValid)
     {
         // Post-objektet sparas antingen genom att en ny post
         // skapas eller genom att en befintlig post uppdateras.
         if (comment.PostId == 0) // Ny post om PostID är 0!
         {
             CommentDAL.InsertComment(comment);
         }
         else
         {
             CommentDAL.UpdateComment(comment);
         }
     }
     else
     {
         // Uppfyller inte objektet affärsreglerna kastas ett undantag med
         // ett allmänt felmeddelande samt en referens till objektet som
         // inte klarade valideringen.
         ApplicationException ex = new ApplicationException(comment.Error);
         ex.Data.Add("Comment", comment);
         throw ex;
     }
 }
示例#4
0
        /// <summary>
        /// Skapar en ny post i tabellen Post.
        /// </summary>
        /// <param name="member">Kontaktuppgift som ska läggas till.</param>
        public void InsertComment(Comment comment)
        {
            // Skapar ett anslutningsobjekt.
            using (MySqlConnection conn = CreateConnection())
            {
                try
                {
                    // Skapar och initierar ett SqlCommand-objekt som används till att
                    // exekveras specifierad lagrad procedur.
                    MySqlCommand cmd = new MySqlCommand("app.uspInsertComment", conn);
                    cmd.CommandType = CommandType.StoredProcedure;

                    // Lägger till de paramterar den lagrade proceduren kräver. Använder här det effektiva sätttet att
                    // göra det på - något "svårare" men ASP.NET behöver inte "jobba" så mycket.
                    cmd.Parameters.Add("@MemberId", MySqlDbType.Int32, 4).Value = comment.MemberId;
                    cmd.Parameters.Add("@PostId", MySqlDbType.Int32, 4).Value = comment.PostId;
                    cmd.Parameters.Add("@Value", MySqlDbType.VarChar, 500).Value = comment.Value;

                    // Den här parametern är lite speciell. Den skickar inte något data till den lagrade proceduren,
                    // utan hämtar data från den. (Fungerar ungerfär som ref- och out-prameterar i C#.) Värdet
                    // parametern kommer att ha EFTER att den lagrade proceduren exekverats är primärnycklens värde
                    // den nya posten blivit tilldelad av databasen.
                    cmd.Parameters.Add("@CommentId", MySqlDbType.Int32, 4).Direction = ParameterDirection.Output;

                    // Öppnar anslutningen till databasen.
                    conn.Open();

                    // Den lagrade proceduren innehåller en INSERT-sats och returnerar inga poster varför metoden
                    // ExecuteNonQuery används för att exekvera den lagrade proceduren.
                    cmd.ExecuteNonQuery();

                    // Hämtar primärnyckelns värde för den nya posten och tilldelar Member-objektet värdet.
                    comment.CommentId = (int)cmd.Parameters["@CommentId"].Value;
                }
                catch
                {
                    // Kastar ett eget undantag om ett undantag kastas.
                    throw new ApplicationException(GenericErrorMessage);
                }
            }
        }