【牛腩新闻发布系统】——添加存储过程后重构SQLHelper
2015-05-26 10:29
260 查看
牛腩新闻发布系统,在看视频的过程中,是根据视频进行一步步的编写优化的,现在到了添加存储过程的时候,当然在我们进行机房重构的时候就已经用过存储过程了,但究其说,存储过程和SQLHelper究竟是怎样联合使用的,当时是不清楚的,今天看到这一部分,就对其做一个过程的总结。
在D层应用之后,我们再在U层绑定传入:
对于这种现象,是绝对不符合我们的代码原则的。我们该如何改善呢?既然两部分内容基本上都一样,那一定可以把他们合成一部分的,那我们又该如何改善,如何合并呢?
首先这两段代码仅仅是有一句不同,而且只有这一句的后半句不同,我们采用传参的方式,将代码来简化,下面是我们把两段代码整理之后的内容:
根据这个方法,我们再对有参和无参的增删改查语句进行相同的改进,我们就把代码完善了一大部分了。这样不仅节省了代码量,还节省了时间。
这只是牛腩新闻发布系统学习过程中收获的冰山一角,之后的内容一定还会有更多更深入的内容需要我们学习,虽然是跟着视频一步步的往前进,但相对于之前看过的视频,那差距可真不是一星半点,期待后面的学习能够有更多的收获!
存储过程
在这儿存储过程内容还不是很多,有视频中如此详细的解说,我们也很容易明白是什么意思,如下:ALTER PROCEDURE [dbo].[procNewsSeleteNewNews] AS BEGIN select top 10 n.id,n.title ,n.createTime ,c.[name] from news n inner join category c on n.caId=c.id order by n.createTime desc END
应用
因为有了存储过程,那我们就要将其应用到我们的程序中,先看看在D层的SQLHelper中我们是如何添加语句来引用的呢?public DataTable test(string procName) { DataTable dt = new DataTable(); cmd = new SqlCommand(procName, GetConn()); cmd.CommandType = CommandType.StoredProcedure; using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { dt.Load(sdr); } return dt; }
在D层应用之后,我们再在U层绑定传入:
GridView1.DataSource = new SQLHelper().test("procNewsSeleteNewNews"); GridView1.DataBind();
优化合并
经过观察我们可以发现,在D层的这段代码和SQLHelper中不带参数的SQL查询语句极其相似:/// <summary> /// 该方法执行传入的SQL查询语句 /// </summary> /// <param name="sql">SQL查询语句</param> /// <returns></returns> public DataTable ExecuteQuery(string sql) { DataTable dt = new DataTable(); cmd = new SqlCommand(sql, GetConn()); cmd.CommandType = CommandType.Text; using (sdr =cmd .ExecuteReader (CommandBehavior .CloseConnection )) { dt.Load(sdr); } //sdr = cmd.ExecuteReader(); //dt.Load(sdr); //sdr.Close(); //conn.Close(); return dt; }
对于这种现象,是绝对不符合我们的代码原则的。我们该如何改善呢?既然两部分内容基本上都一样,那一定可以把他们合成一部分的,那我们又该如何改善,如何合并呢?
首先这两段代码仅仅是有一句不同,而且只有这一句的后半句不同,我们采用传参的方式,将代码来简化,下面是我们把两段代码整理之后的内容:
/// <summary> /// 执行SQL查询语句或者存储过程 /// </summary> /// <param name="cmdText">SQL查询语句或者存储过程</param> /// <param name="ct">命令类型</param> /// <returns></returns> public DataTable ExecuteQuery(string cmdText, CommandType ct) { DataTable dt = new DataTable(); cmd = new SqlCommand(cmdText, GetConn()); cmd.CommandType = ct; using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { dt.Load(sdr); } //sdr = cmd.ExecuteReader(); //dt.Load(sdr); //sdr.Close(); //conn.Close(); return dt; }
根据这个方法,我们再对有参和无参的增删改查语句进行相同的改进,我们就把代码完善了一大部分了。这样不仅节省了代码量,还节省了时间。
这只是牛腩新闻发布系统学习过程中收获的冰山一角,之后的内容一定还会有更多更深入的内容需要我们学习,虽然是跟着视频一步步的往前进,但相对于之前看过的视频,那差距可真不是一星半点,期待后面的学习能够有更多的收获!
相关文章推荐
- 牛腩新闻发布系统(一):SQLHelper重构(一)
- 牛腩新闻发布系统(一):SQLHelper重构(一)
- 牛腩新闻发布系统笔记10:再次重构SQLHelper
- 牛腩新闻发布系统(二):SQLHelper重构(二)
- 牛腩新闻发布系统(二):SQLHelper重构(二)
- 牛腩新闻发布系统笔记4:重构SQLHelper
- 【牛腩新闻发布系统】一步步演化的SQLHelper
- 牛腩新闻发布系统(5)——添加新闻之FreeTextBox使用
- 牛腩新闻发布系统——存储过程使用
- 牛腩新闻发布系统——存储过程使用
- 【牛腩新闻发布系统】写SQlHelper
- 新闻发布系统,SQLHelper重构
- 牛腩新闻发布系统笔记9:存储过程
- 【牛腩新闻发布系统之handler】
- 【牛腩新闻发布系统】错误集锦
- 牛腩新闻发布系统——后台前台整合技术
- 【牛腩新闻发布系统】网页发布一般步骤
- 【牛腩新闻发布系统】——母版页与web控件
- DRP PK 牛腩新闻发布系统
- 牛腩新闻发布系统之你的验证码正常显示了吗?!