又到了我最期待的时刻——写博客。通过一个暑假,我发现了写博客的乐趣,写博客不再是以前一样为了应付要求去写,而是为了书写自己的成长史去认真书写博客。通过写博客,我才知道这一周我学了什么知识,我的学习状态时怎样的。
这段时间在学习牛腩新闻发布系统,当然期初很傻的认为,牛腩新闻发布系统的视频讲述了四五个程序,所以我就想着看完一段,然后去敲代码,再进行下一段,而且自己看视频的目录也不知道怎么回事,让我也产生了这么一种想法,我先在都认为当初脑子真是进水了。不过还好,亡羊补牢为时不晚。所以我就看完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
/// <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中我们就学过过程,而且他们都大同小异,就是编写的语言不一样罢了,功能上也许会有一些出入。所以说编织知识网消除了我们对知识的恐惧,让我们对这些知识产生亲切感,这样我们才有勇气信心继续学习下去。