SQLHelper重构

    之前了解过ADO.NET的一些基本知识后,觉得ADO.NET太强大了,这个平台将数据库的一些操作给封装起来,便于我们的使用,这几天看了牛腩的视频,里面又讲到了SQLHelper,以前的SQLHelper类使用vb.net编写的,这次是用C#编写的,用C#编写完了之后,感觉又学到了知识,于是自己就总结下来了。

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

   1、声明对象的方式

string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; //读取配置文件中的链接字符串
private SqlConnection conn = null; //声明一个Connection对象,令其为null
conn = new SqlConnection(connStr);
SqlConnection conn1 = new SqlConnection(connStr);//声明一个Connection对象并将其实例化

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

   SQLHelper源码

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;
            }

        }


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

     

你可能感兴趣的:(源码,对象,内存)