牛腩新聞發佈系統——存儲過程

       又到了我最期待的時刻——寫博客。通過一個暑假,我發現了寫博客的樂趣,寫博客不再是以前一樣爲了應付要求去寫,而是爲了書寫自己的成長史去認真書寫博客。通過寫博客,我才知道這一週我學了什麼知識,我的學習狀態時怎樣的。

       這段時間在學習牛腩新聞發佈系統,當然期初很傻的認爲,牛腩新聞發佈系統的視頻講述了四五個程序,所以我就想着看完一段,然後去敲代碼,再進行下一段,而且自己看視頻的目錄也不知道怎麼回事,讓我也產生了這麼一種想法,我先在都認爲當初腦子真是進水了。不過還好,亡羊補牢爲時不晚。所以我就看完16集到了一段之後,就開始敲代碼,不過也給了自己一個鍛鍊的機會——獨立自主的學習。

    這次寫的是關於存儲過程。


一.存儲過程與VB

      看到存儲過程四個字,我們的感覺是什麼?熟悉?陌生?先看一張圖:


             這張圖我把我們現在學習的存儲過程與我們VB中所學習的聯繫在一起。二者都屬於過程,同時我們也可以認爲兩者都是方法。這也是可以的。但是二者不同在何處呢?不同的地方就是VB中寫的過程是用VB的語言,但是存儲過程用的是SQl語言。本質一樣,外表不一樣而已。


二.什麼是存儲過程?

        以上講述了一下存儲過程與VB的關係,那麼什麼是存儲過程?首先要能明白什麼是過程

       過程:“過程”,事物發展所經過的程序;階段。“過程”,也是將輸入轉化爲輸出的系統(百度百科)。舉一個更容易懂的例子:過程就是從宿舍到教師中間的走過的路途是過程。

       存儲過程:存儲過程(Stored Procedure)是在大型數據庫系統中,一組爲了完成特定功能的SQL 語句集,經編譯後存儲在數據庫中,用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它。還是舉一個更容易懂得例子:就是把我從宿舍到教室的這個路線存儲起來就是存儲過程。


三、爲什麼使用存儲過程

       存儲過程可以重複的進行使用,這樣減少開發人員的工作量。同時提高了性能,在存儲過程創建的時候進行編譯,將來使用的時候不再重新編譯(一個人的理解就是數據庫將這些語句進行緩存到了數據字典中,這樣相應的時間就縮短了)。

      當對數據庫進行多張表的複雜操作時候,就可以將此複雜的操作用存儲過程封裝起來。之後會又一個實例。這樣就減少了在D層的代碼量。

      但是當然存儲過程還存在着他自己的問題,以我現在的理解就是,如果用戶增加了需求,這樣會導致數據結構複雜。同事在調試的時候,我們程序出現問題了,所以我們還要對數據庫中的存儲過程的語句進行一下調試,這樣會比較麻煩一些。


四.如何使用存儲過程

       以上分析的就是存儲過程的好處,現在就舉一個實例,瞭解一下存儲過程

       牛腩新聞發佈系統:刪除新聞(同時將旗下的新聞評論也刪除),這就是對兩張表的操作,

SQL存儲過程語句:

/****** Object:  StoredProcedure [dbo].[news_delete]    Script Date: 09/07/2014 11:16:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[news_delete] 
@id int	
AS
BEGIN
-----先刪除該新聞下的評論
delete comment where newsId =@id 
-----再刪除新聞本身
delete news where id =@id 	

END

D層代碼

/// <summary>
        /// 刪除新聞(連同旗下的新聞評論一起刪除)
        /// </summary>
        /// <param name="id">根據新聞的Id刪除新聞</param>
        /// <returns>返回Boolean型</returns>
        public bool Delete(int id)
        {
            bool flag = false;
            string cmdText = "news_delete ";
            SqlParameter[] paras = new SqlParameter[] { 
           new SqlParameter ("@id",id )};
             int res=sqlhelper.ExecuteNonQuery(cmdText,paras,CommandType.StoredProcedure);
             if (res > 0)
             {
                 flag = true;
             }
            return flag;
        }
       通過利用存儲過程,在D層中我們的代碼相對來說比起以前會很少,在學習存儲過程之前,我的做法就是寫兩條刪除語句,一個是刪除評論語句,一個是刪除新聞語句,然後再寫一個方法去調用,這樣最後才完成刪除新聞這一完整的過程。


結論:

      在這次學習存儲過程的時候,期初是看做很新鮮的東西來學習,但是後來VB中我們就學過過程,而且他們都大同小異,就是編寫的語言不一樣罷了,功能上也許會有一些出入。所以說編織知識網消除了我們對知識的恐懼,讓我們對這些知識產生親切感,這樣我們纔有勇氣信心繼續學習下去。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章