您的位置:首页 > 数据库

SQLHelper重构

2015-06-21 11:33 465 查看
    之前了解过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类中重载的函数中再实例化,这样做节省了代码的编写,让我们看起来更爽,而且当系统执行垃圾回收时,使回收资源更加方便。

     
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  对象 内存 源码