牛腩新闻发布系统——存储过程

       又到了我最期待的时刻——写博客。通过一个暑假,我发现了写博客的乐趣,写博客不再是以前一样为了应付要求去写,而是为了书写自己的成长史去认真书写博客。通过写博客,我才知道这一周我学了什么知识,我的学习状态时怎样的。

       这段时间在学习牛腩新闻发布系统,当然期初很傻的认为,牛腩新闻发布系统的视频讲述了四五个程序,所以我就想着看完一段,然后去敲代码,再进行下一段,而且自己看视频的目录也不知道怎么回事,让我也产生了这么一种想法,我先在都认为当初脑子真是进水了。不过还好,亡羊补牢为时不晚。所以我就看完16集到了一段之后,就开始敲代码,不过也给了自己一个锻炼的机会——独立自主的学习。

    这次写的是关于存储过程。


一.存储过程与VB

      看到存储过程四个字,我们的感觉是什么?熟悉?陌生?先看一张图:

牛腩新闻发布系统——存储过程_第1张图片

             这张图我把我们现在学习的存储过程与我们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中我们就学过过程,而且他们都大同小异,就是编写的语言不一样罢了,功能上也许会有一些出入。所以说编织知识网消除了我们对知识的恐惧,让我们对这些知识产生亲切感,这样我们才有勇气信心继续学习下去。


你可能感兴趣的:(牛腩新闻发布系统——存储过程)