新闻发布系统,SQLHelper重构

    在清楚把握牛腩新闻发布系统的需求,以及对系统的数据库也做好了相应的设计后,接下来的几天里就是对后台代码的编写。
    在视频中,采用的是经典三层的框架,这对于已经经历过机房重构的我们来说,敲代码还是很容易上手的。
    相信大家都不会忘记机房重构中我们的一个好助手,那就是SQLHelper。
    在机房重构的时候,看了很多博客,大家都用上了,也都觉得好用,我也就直接借鉴而来。在自己一步一步调试的时候,在自己的程序出现Bug的时候,真的发现SQLHelper的好处多多。但自己也没有去认真研究过这样一个类究竟是怎么写出来的。
     而现在学习的牛腩视频中,老师给我们清楚的讲解了SQLHelper是怎样一步一步进行完善的。这个过程,感觉真是受益匪浅。
    首先清楚对于数据库的操作,抽象后讲,也就是五步:连接——打开——执行——关闭——返回。
    在用面向对象C#语言编程中,构造函数就是用来进行初始化的工具。所以,连接数据库的代码为:

 public SQLHelper()
        {
            string connStr = "server=hzt-PC;database=newssystem;uid=sa;PWD=123456;";
        }
    下面是对连接状态做判断,如果为关闭,则将其打开:
 private SqlConnection GetConn()
        {
            if (conn.State == ConnectionState.Closed)
            {
                conn.Open();
            }
            return conn;
        }
    在数据库做完前两项工作后,便可以开始执行其他对于用户想执行的任何增删改查的操作。就拿一个执行无参数的查询的操作来说,代码如下:
public DataTable ExecuteQuery(string sql)
        {
            DataTable dt = new DataTable();
            //连接
            string connStr = "server=hzt-PC;database=newssystem;uid=sa;PWD=123456";
            SqlConnection conn = new SqlConnection(connStr);
            //打开
            conn.Open();
            //执行
            SqlCommand cmd = new SqlCommand(sql, conn);
            SqlDataReader sdr = cmd.ExecuteReader();
            dt.Load(sdr);
            //关闭
            sdr.Close();
            conn.Close();
            //返回
            return dt;
        }
       从上面的代码可以看到,每执行一个具体的操作,都还需要把连接-打开-关闭这三步的代码加上,我们便可对其进行封装,下面便开始对SQLHelper类进行重构。
     第一,从连接说起,在D层中写的代码是具体指明连接哪个数据库,连接哪个服务器,但如果我们想要更换一个数据库,那就必须跑到D层下修改之前编写好的代码,这是不符合开闭原则的。
     所以解决这一问题,我们加上配置文件,使连接的那一长串代码用一个字符串变量表示,如果更换数据库,只需要到配置文件中添加相应的代码就行。
     配置文件中代码:
<connectionStrings>
        <add name="connStr" connectionString="server=; database=newssystem;uid=sa;pwd=123456"/>
    </connectionStrings>
    数据库连接代码:
      public SQLHelper ()
        {
            string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
            conn = new SqlConnection(connStr);
        }
    第二,仍旧是对数据库状态进行判断,这里没做什么改动。
    第三,对数据库进行各类操作,仍旧以一个执行无参数的查询操作为例,代码如下:
 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);
            }
            //关闭
            return dt;
        }  
    从上面的代码来看,这就比第一次的SQLHelper简单了许多,其它类型的操作也像这样做,一个SQLHelper也就写好了。
    学习心得:
    这一次,对于SQLHelper类的重构的学习,使得自己对这个助手类又亲近了不少。在自己思考总结这个类是如何得来的这一个过程中,对之前学习的数据库的一些基本操作也回顾了一遍,感觉简单了不少。这一次的代码是照着视频中的源码写出来的,或许,下一次,自己根据总结的这五步,一步一步去写,也可以自己写出来一个完整的SQLHelper了。
时间: 2024-10-10 19:14:18

新闻发布系统,SQLHelper重构的相关文章

SQLHelper重构——【牛腩新闻发布系统】

一开始学习机房收费系统的时候,对数据库助手类的抽象和封装,理解的还不是很深刻.再次在牛腩新闻发布系统中看到SQLHelper的重构,感觉对SQLHelper抽象过程印象深刻了许多. 下面简单介绍一下ADO(ActiveX Data Object),首先通过Connection建立与服务器的联接,然后通过Command执行命令,最后通过Recordset对象来操作和查看查询结果.Parameters是Command对象的参数信息,Filed通过Recordset使用,它提供了相应的字段信息.Err

牛腩新闻发布系统--重构SQL Helper

天外有天,人外有人.自我进提高班以来,一直都在考虑,先前重构机房的时候,看到别人在D层加了SQL Helper,就一定要学者加上玩玩,等做完了以后,进行下一个阶段牛腩的时候,又看到了人家建的SQL Helper,不觉感慨,跟人家比,人家就是我的老师! 闲话就不多说了,进行正式的话题:如何写好SQL Helper?从宏观上讲,SQL Helper是完全体现了面向对象的抽象和封装的思想的.它对重复代码抽取出来,进行抽象,抽象就是为了封装,提高了代码的复用. 那么就该讨论怎么写的问题.如果我先上来给大

牛腩新闻发布系统(B/S)中的SQLHelper

1.关于SQLHelper的基础知识的说明,简单介绍一下: SqlHelper是一个基于.NET Framework的数据库操作组件.组件中包含数据库操作方法,SqlHelper有很多版本,主要以微软一开始发布的SqlHelper类,后面包含进了Enterprise Library开源包中了.还有一个主要版本是dbhelper.org开源的sqlhelper组件,优点是简洁,高性能,不仅仅支持sqlserver,同时支持sqlserver.oracle.access.Mysql数据库,也是一个开

新闻发布系统后台

作为第一个进行的Web系统,新闻发布系统的后台代码和之前编写的机房没有太大的区别,下面主要通过SQLHelper()方法的创建和重构总结下新闻系统的后台. 首先是画用例图.类图.进行数据库的设计!这里不做详细说明每个系统开始的工作.然后编写D层代码SQLHelper(),以ExecuteNonQuery()方法来简单描述SQLHelper()的几次重构 1.主要结构 原来是针对单个的一个功能写一个方法,这里将方法的主要结构拿出,通过传入sql语句来执行类似的操作. public int Exec

点滴的积累---牛腩新闻发布系统总结

最近学习状态一直都不错,最近敲完牛腩新闻发布系统后又看了看<培养计划6.0>发现"牛腩新闻发布系统"的作用其实就是一个成语--抛砖引玉.在该新闻发布系统中基本上涉及到了B/S开发所需要具备的知识模块(HTML.Asp.net.XML.JavaScript.CSS.DIV.JQuery.AJAX).通过这个小的系统我的学习也将从C/S转移到B/S上,当然这个小的系统带给我的远远不止这些. 一.重新认识了软件开发的流程. 之前虽然学习过UML.软件工程等也算对系统开发有了初步的

BS领军人物--牛腩新闻发布系统

2014年11月10日,是个难忘的日子,这一天,小编的BS学习开始了,BS的开头,从牛腩新闻发布系统开始,之前学习的内容都是CS方面的知识,软考过后,开始学习BS,接触BS有几天的时间了,跟着牛腩老师敲着牛腩新闻发布系统,感觉棒棒哒,看了前面二十集,发现牛腩老师真的是把党的思想贯彻的淋漓尽致,跟着牛腩老师一起学习,发现了很多让我怦然心动的小知识,每次都让我的小宇宙爆发,现在就把这些小技巧分享给小编的小伙伴.该博文小编主要讲解三个方面的知识.第一:如何让代码整齐美观,第二:代码的注释,第三:连接数

牛腩新闻发布系统总结

牛腩新闻发布系统,我用了22天才完成,从时间上来说,我做的好像有点久哎! 不过,从刚刚开始接触牛腩发布系统的时候,并没有那种非常难或者说感觉非常"高大上"的感觉.感觉的是非常熟悉,或者说似曾相识. 从开发过程来说,牛腩老师按照我们软件的基本开发流程开始讲解.从文档的编写入手,因为刚刚做完机房,所以对于软件开发的流程,感觉非常亲切.做完文档后,老师开始了数据库的讲解,这和我们机房的数据库基本上没差啊!而且比机房数据库简单很多,虽然不能说运用自如,但至少感觉上熟悉和简单. 之后是SQLHe

新闻发布系统,B/S模式下的三层应用

三层的学习已接触四五个月了,最早是在学习VB.NET视频中开始接触的,那时候跟着视频敲了两个例子.再后来,个人机房重构的时候,从三层进步到了七层,此后就觉得我们不能仅仅局限于三层之上. 不过,那些都是C/S模式之下的编程.到现在,接触了B/S模式也一个多月了,第一个牛腩新闻发布系统觉得很是有趣,还是从最基本的开始,下面就一起看看B/S模式下,三层是怎样应用的.这篇博客就以添加新闻的实例来总结. 对于三层的整个过程大家都是很熟悉的了,那么在这里就不再赘述了,直接一层一层来分析. 一.思路整理. U

牛腩新闻发布系统---外键约束下如何删除记录

一.为什么使用外键? 查了些资料,八个字"保持完整性.一致性",结合我之前做的重构机房收费系统,我的理解是"防止相关表中数据没有关联而变得孤立,最终导致数据冗余",得出这个结论是上次让贾丽敏帮忙点系统时候我最深刻的感受,因为我的数据库关系图中辣么多张表却没有丝毫关系-- 既然官方解释是"完整性和一致性",就先来说明一下: 对于完整性和一致性,不少人都混为一谈了. 完整性(integrity)更多是针对实际业务来说的,比如说一个职员ID,不能在一个