类的释放
我写一个类,第一次写的,由早是连接SQL SERVER和执行SQL语句的,所以在运行多次以后没有释放,IIS的线程池会被占完,所以需要加上释放功能,但我不知道怎么才能释放,所以请大哥们帮看看,我这个类应该如何写!
完整代码如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Configuration;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient ;
//using System.Data.OleDb ;
namespace Vekong.Classes
{
/// <summary>
/// kqOperDB类,用于查询、插入、更新、删除数据表
/// Author:史贵平
/// </summary>
public class kqOperDB
{
private string sSql ; //查询SQL语句
private string sqlUpdate ; //更新SQL语句
private string sTable ; //数据集表名
kqOperDB()
{
//ShowMessage("构造");
}
~kqOperDB()
{
//ShowMessage("析构");
Dispose (false);
}
public void Dispose()
//供程序员显式调用的Dispose方法
{
Dispose(true);
//调用带参数的Dispose方法,释放托管和非托管资源
System.GC.SuppressFinalize(this);
//手动调用了Dispose释放资源,那么析构函数就是不必要的了,这里阻止GC调用析构函数
}
protected void Dispose(bool disposing)
//protected的Dispose方法,保证不会被外部调用。
//传入bool值disposing以确定是否释放托管资源
{
if (disposing)
{
//在这里加入清理"托管资源"的代码,应该是xxx.Dispose();
//这里释放哪些
}
// 在这里加入清理"非托管资源"的代码
//这里释放哪些
}
public string kqTable
{
get
{
return sTable;
}
set
{
sTable = value;
}
}
public string kqSelSql
{
get
{
return sSql;
}
set
{
sSql = value;
}
}
public string kqOpeSql
{
get
{
return sqlUpdate ;
}
set
{
sqlUpdate = value ;
}
}
public void ClearSql()
{
sSql = null ;
}
public SqlConnection CreateConn()
{
string DSN ;
DSN = ConfigurationSettings.AppSettings["DSN"];
SqlConnection Conn = new SqlConnection(DSN);
return Conn;
/*SqlConnection AppConn = new SqlConnection();
AppConn Conn = new AppConn();
AppConn = Conn.CreateConn();
AppConn.Open();
return AppConn ;
*/
}
public DataSet SelDb()
{
SqlConnection AppConn = CreateConn() ;
AppConn.Open();
string Sql = kqSelSql ;
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand(kqSelSql,AppConn);
da.Fill(ds,kqTable.Trim());
//AppConn.Close();
return ds ;
}
/*private void ShowMessage(string message)
{
Response.Write("<script language=javascript>");
Response.Write("alert(\""+message+"\");");
Response.Write("</script>");
}*/
public void OpeDb()
{
SqlConnection AppConn = CreateConn() ;
AppConn.Open();
string Sql =kqOpeSql ;
SqlCommand cmdSave = new SqlCommand(Sql,AppConn);
cmdSave.CommandType = CommandType.Text;
cmdSave.ExecuteNonQuery();
//AppConn.Close();
}
}
}