SQLHelper为什么要这样写?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xml1996/article/details/85328410

SQLHelper是什么?

是基于.Net Framework 的数据库操作组件。简单理解为是数据库的小助手类。

主要是应用高内聚低耦合的方法,简化重复写的SQLConnection,SqlCommand,SQLDataReader等。

它主要封装后只需要给方法传入参数和连接字符串,就可以访问数据库了。

一开始是什么样子?

  • SqlConnection——表示一个到SQL Server数据库的打开的连接
  • SqlCommand——表示允许你制定在数据库上执行的操作的liex烈性,比如select insert update delect
  • SqlDataReader——表示数据库读取行的只进流方式

重构之后什么样子?

 public class SQLHelper
    {

        private SqlConnection conn = null;
        private SqlCommand cmd = null;
        private SqlDataReader sdr = null;
       
        public SQLHelper()//SQLHelper的构造方法
        {
           
            string connStr = @"server = LMX-PC\SQLEXPRESS;database= newssystem; User ID= sa;Password = 123456";//数据库
            conn = new SqlConnection(connStr);//与数据建立连接
            
        }

        public SqlConnection GET()
        {
            //如果 数据库状态= 关闭
            if (conn.State ==ConnectionState.Closed )
            {
                conn.Open();//打开数据库
            }
            return conn;//返回装填
        }

        /// <summary>
        /// 该方法对传入的参数进行增删改SQL语句执行
        /// </summary>

        public int ExecuteNonQuery(string sql)
        {
            int res;

            cmd = new SqlCommand(sql, GET());
            res = cmd.ExecuteNonQuery();

            //如果 数据库状态= 连接
            if (conn.State==ConnectionState.Open )
            {
                //那么把它关闭
                conn.Close();
            }  

            return res;
        }

        /// <summary>
        /// 执行SQL 查询操作
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public DataTable ExecuteQuery(string sql)
        {
            DataTable dt = new DataTable();//需要返回datetable类型,所以实例化

            cmd = new SqlCommand(sql,GET());
            sdr = cmd.ExecuteReader();
            dt.Load(sdr);
            /如果 数据库状态= 连接
            if (conn.State==ConnectionState.Open )
            {
                //那么把它关闭
                conn.Close();
            }  
              
            return dt;
        }

 对上面代码的详解:

 这里对SQLHelper进行了重构,对它应该有了进一步认识。SQLHelper和数据库有着密切的关联在string ConnStr= @"server = LMX-PC\SQLEXPRESS;database= newssystem; User ID= sa;Password = 123456"; 这句找到数据库的语句。如果我们对数据的ID和密码进行了修改还需要打开源代码ji进行修改,这样增加了耦合。所以为了减少这样的麻烦。

就用到了配置文件Web.config:

<configuration>
  
  <system.web>
    <compilation debug="true" targetFramework="4.5.2"/>
    <httpRuntime targetFramework="4.5.2"/>
  </system.web>

  <!--
  这是刚刚在SQLHelper里面的找到数据库的位置的语句
-->
  <appSettings/>
    <connectionStrings>
      <add name ="connStr" connectionString="server = LMX-PC\SQLEXPRESS;database= newssystem; User ID= sa;Password = 123456"/>
    </connectionStrings>
  
  
  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs"
        type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
        type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/>
    </compilers>
  </system.codedom>
 
</configuration>

那么对应SQLHelper的部分修改为:

 string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;//提供应用程序对数据库的访问

小编今天先理解到这里,这里的学问感觉还有很多,还需要慢慢理解。

欢迎大家交流给予指正!

猜你喜欢

转载自blog.csdn.net/xml1996/article/details/85328410
今日推荐