当前位置:Gxlcms > 数据库问题 > SQLHelper重构

SQLHelper重构

时间:2021-07-01 10:21:17 帮助过:4人阅读

   相信任何程序员在编写的代码的时候都考虑到了内存的使用与分配,而这次使用C#编写的SQLHelper类,考虑到了内存的使用与分配问题,这设计到了声明和实例化对象时所使用的不同方法。还有代码的抽象,怎样编写出比较“爽”的代码!

   1、声明对象的方式 

<span style="font-family:KaiTi_GB2312;font-size:18px;">string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; //读取配置文件中的链接字符串</span>
<span style="font-family:KaiTi_GB2312;font-size:18px;">private SqlConnection conn = null; //声明一个Connection对象,令其为null</span>
<span style="font-family:KaiTi_GB2312;font-size:18px;">conn = new SqlConnection(connStr);</span>

<span style="font-family:KaiTi_GB2312;font-size:18px;">SqlConnection conn1 = new SqlConnection(connStr);//声明一个Connection对象并将其实例化</span>

   第一种方式声明了Connection对象,但并没有给conn分配内存,只有到conn真正用的时候分配内存,而第二种方式是直接声明并实例化Connection对象conn1,这样直接就给conn1分配了内存空间,两种方法想比较,我觉得第一种方法好用,因为第一种考虑了内存的使用问题,就是节省内存的使用。

   SQLHelper源码

<span style="font-family:KaiTi_GB2312;font-size:18px;">public class SQLHelper
    {
        private SqlConnection conn = null; //声明一个Connection对象,令其为null
        private SqlCommand cmd = null;
        private SqlDataReader sdr = null;
        private DataTable dt = null;

        public SQLHelper()
        {
            string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; //读取配置文件中的链接字符串
            conn = new SqlConnection(connStr);
        }
        // SqlConnection conn1 = new SqlConnection(connStr);//声明一个Connection对象并将其实例化
        private SqlConnection GetConn()
        {
            if (conn.State == ConnectionState.Closed)
            {
                conn.Open();
            }
            return conn;
        }

        /// <summary>
        /// 此方法执行传入的SQL语句,执行增删改操作。
        /// </summary>
        /// <returns>返回更行的记录数</returns>
        public int ExecuteNonQuery(string sql)
        {
            using (cmd = new SqlCommand(sql, GetConn()))
            {
                int res = cmd.ExecuteNonQuery();
                return res;
            }

        }</span>
    与之前的SQLHelper相比,此SQLHelper与之前的SQLHelper编写相比,这种将对数据库操作的一些对象提前声明了,但没有实例化(没有分配内存空间),而且将链接对象的声明和实例化放在了SQLHelper的构造函数中,当我们实例化SQLHelper类的对象时,自然而然的将连接对象给声明并实例化了,而不必再到以前SQLHelper类中重载的函数中再实例化,这样做节省了代码的编写,让我们看起来更爽,而且当系统执行垃圾回收时,使回收资源更加方便。

     

SQLHelper重构

标签:

人气教程排行