示例#1
0
        /// <summary>
        /// Uppdaterar en kunds kontaktuppgifter i tabellen Post.
        /// </summary>
        /// <param name="member">KOntaktuppgift som ska uppdateras.</param>
        public void UpdatePost(Post post)
        {
            // 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("UpdatePost", 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("@PostId", MySqlDbType.Int32, 4).Value = post.PostId;
                    cmd.Parameters.Add("@MemberId", MySqlDbType.Int32, 4).Value = post.MemberId;
                    cmd.Parameters.Add("@Value", MySqlDbType.VarChar, 500).Value = post.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);
                }
            }
        }
示例#2
0
        /// <summary>
        /// Skapar en ny post i tabellen Post.
        /// </summary>
        /// <param name="member">Kontaktuppgift som ska läggas till.</param>
        public void InsertPost(Post post)
        {
            // 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("InsertPost", 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("@Id", MySqlDbType.Int32, 4).Value = post.MemberId;
                    cmd.Parameters.Add("@Value", MySqlDbType.VarChar, 500).Value = post.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("@PostId", 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.
                    //Varför får jag null-värde här? Har ingen out parameter för postid
                    post.PostId = (int)cmd.Parameters["@PostId"].Value;
                }
                catch
                {
                    // Kastar ett eget undantag om ett undantag kastas.
                    throw new ApplicationException(GenericErrorMessage);
                }
            }
        }
示例#3
0
 public SavedEventArgs(Post post)
 {
     Post = post;
 }
示例#4
0
        protected void SaveButton_Click(object sender, EventArgs e)
        {
            // Om valideringen är OK så...
            if (Page.IsValid)
            {
                try
                {
                    // ...skapa ett nytt Member-objekt och initiera det
                    // med värdena från textfälten och...
                    Post post = new Post
                    {
                        MemberId = MemberId,
                        Value = Value,
                        PostId = PostId
                    };

                    // ...veriferera att objektet uppfyller affärsreglerna...
                    if (!post.IsValid)
                    {
                        // ...visa felmeddelanden om vad som
                        // orsakade att valideringen misslyckades.
                        AddErrorMessage(post);
                        return;
                    }

                    // ...spara objektet.
                    Service service = new Service();
                    service.SavePost(post);

                    // Om någon abbonerar på händelsen Saved...
                    if (Saved != null)
                    {
                        // ...utlöses händelsen Saved och skickar med
                        // en referens till kunduppgifterna som sparats.
                        Saved(this, new SavedEventArgs(post));
                    }
                }
                catch
                {
                    // ...visas ett felmeddelande.
                    AddErrorMessage(Strings.Post_Inserting_Error);
                }
            }
        }
示例#5
0
 // ObjectDataSource kräver att en Delete-metod
 // http://en.wikipedia.org/wiki/Create,_read,_update_and_delete
 /// <summary>
 /// Tar bort specifierad kontaktuppgift ur databasen.
 /// </summary>
 /// <param name="post">Kontaktuppgift som ska tas bort.</param>
 public void DeletePost(Post post)
 {
     // med en parameter av typen Member.
     PostDAL.DeletePost(post.PostId);
 }
示例#6
0
 /// <summary>
 /// Spara en kontaktuppgift i databasen.
 /// </summary>
 /// <param name="member">KOntaktuppgifter som ska sparas.</param>
 public void SavePost(Post post)
 {
     if (post.IsValid)
     {
         // Post-objektet sparas antingen genom att en ny post
         // skapas eller genom att en befintlig post uppdateras.
         if (post.PostId == 0) // Ny post om PostID är 0!
         {
             PostDAL.InsertPost(post);
         }
         else
         {
             PostDAL.UpdatePost(post);
         }
     }
     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(post.Error);
         ex.Data.Add("Post", post);
         throw ex;
     }
 }