标签:
之前了解过ADO.NET的一些基本知识后,觉得ADO.NET太强大了,这个平台将数据库的一些操作给封装起来,便于我们的使用,这几天看了牛腩的视频,里面又讲到了SQLHelper,以前的SQLHelper类使用vb.net编写的,这次是用C#编写的,用C#编写完了之后,感觉又学到了知识,于是自己就总结下来了。
相信任何程序员在编写的代码的时候都考虑到了内存的使用与分配,而这次使用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类中重载的函数中再实例化,这样做节省了代码的编写,让我们看起来更爽,而且当系统执行垃圾回收时,使回收资源更加方便。
标签:
原文地址:http://blog.csdn.net/zhoukun1008/article/details/46581133