又到了我最期待的時刻——寫博客。通過一個暑假,我發現了寫博客的樂趣,寫博客不再是以前一樣爲了應付要求去寫,而是爲了書寫自己的成長史去認真書寫博客。通過寫博客,我才知道這一週我學了什麼知識,我的學習狀態時怎樣的。
這段時間在學習牛腩新聞發佈系統,當然期初很傻的認爲,牛腩新聞發佈系統的視頻講述了四五個程序,所以我就想着看完一段,然後去敲代碼,再進行下一段,而且自己看視頻的目錄也不知道怎麼回事,讓我也產生了這麼一種想法,我先在都認爲當初腦子真是進水了。不過還好,亡羊補牢爲時不晚。所以我就看完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中我們就學過過程,而且他們都大同小異,就是編寫的語言不一樣罷了,功能上也許會有一些出入。所以說編織知識網消除了我們對知識的恐懼,讓我們對這些知識產生親切感,這樣我們纔有勇氣信心繼續學習下去。