C#(.NET)数据访问连接、查询、插入等操作的封装类 
   yiwenyida   2008-05-30  
    using System; 
using System.Data; 
using System.Data.SqlClient; 
using System.Configuration; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Web.UI.HtmlControls; 
/// <summary> 
/// Public 的摘要说明 
/// </summary> 
public class PublicClass 
{   //定义一个公用成员 
    public SqlConnection conn; 
    public PublicClass() 
    { 
        // 
        // TODO: 在此处添加构造函数逻辑 
        // 
    } 
    #region 建立数据库连接 
    public void OpenConn() 
    { 
        String strconn = System.Configuration.ConfigurationManager.AppSettings["sqlconn"].ToString(); 
        conn = new SqlConnection(strconn); 
        if (conn.State.ToString().ToLower() == "open") 
        { 
            //连接为打开时 
        } 
        else 
        { 
            //连接为关闭时 
            conn.Open(); 
        } 
    } 
    #endregion 
    #region 关闭并释放连接 
    public void CloseConn() 
    { 
        if (conn.State.ToString().ToLower() == "open") 
        { 
            //连接为打开时 
            conn.Close(); 
            conn.Dispose(); 
        } 
    } 
    #endregion 
    #region 返回DataReader,用于读取数据 
    public SqlDataReader DataRead(string sql) 
    { 
        OpenConn(); 
        SqlCommand cmd = new SqlCommand(sql, conn); 
        SqlDataReader dr = cmd.ExecuteReader(); 
        return dr; 
    } 
#endregion 
    #region 返回一个数据集 
    public DataSet MySqlDataSet(string Sql, string tableName) 
    { 
        OpenConn(); 
        SqlDataAdapter da; 
        DataSet ds = new DataSet(); 
        da = new SqlDataAdapter(Sql, conn); 
        da.Fill(ds, tableName); 
        CloseConn(); 
        return ds; 
    } 
    #endregion 
    //返回一个数据集 
    public DataView MySqlDataSource(string Sql) 
    { 
        OpenConn(); 
        SqlDataAdapter da; 
        DataSet ds = new DataSet(); 
        da = new SqlDataAdapter(Sql, conn); 
        da.Fill(ds, "temp"); 
        CloseConn(); 
        return ds.Tables[0].DefaultView; 
    } 
    #region 执行一个SQL操作:添加、删除、更新操作 
    //执行一个SQL操作:添加、删除、更新操作 
    public void MySqlExcute(string sql) 
    { 
        OpenConn(); 
        SqlCommand cmd; 
        cmd = new SqlCommand(sql, conn); 
        cmd.ExecuteNonQuery(); 
        cmd.Dispose(); 
        CloseConn(); 
    } 
    #endregion 
    #region 执行一个SQL操作:添加、删除、更新操作,返回受影响的行 
    //执行一个SQL操作:添加、删除、更新操作,返回受影响的行 
    public int MySqlExecuteNonQuery(string sql) 
    { 
        OpenConn(); 
        SqlCommand cmd; 
        cmd = new SqlCommand(sql, conn); 
        int flag = cmd.ExecuteNonQuery(); 
        return flag; 
    } 
    #endregion 
    public object MySqlExecuteScalar(string sql) 
    { 
        OpenConn(); 
        SqlCommand cmd; 
        cmd = new SqlCommand(sql, conn); 
        object obj = cmd.ExecuteScalar(); 
        cmd.Dispose(); 
        CloseConn(); 
        return obj; 
    } 
    /// <summary> 
    /// 返回DataTable对象 
    /// </summary> 
    /// <param name="sql">sql语句</param> 
    /// <returns></returns> 
    public DataTable MySqlDataTable(string sql) 
    { 
        OpenConn(); 
        DataSet ds = new DataSet(); 
        SqlDataAdapter da = new SqlDataAdapter(sql, conn); 
        da.Fill(ds, "table"); 
        CloseConn(); 
        return ds.Tables["table"]; 
    } 
    /// <summary> 
    /// 返回一个数据集的记录数 
    /// </summary> 
    /// <param name="sql">传递的sql语句必须为一个统计查询</param> 
    /// <returns></returns> 
    public int MySqlRecordCount(string sql) 
    { 
        //注:Sql 语句必须是一个统计查询 
        OpenConn(); 
        SqlCommand cmd = new SqlCommand(); 
        cmd.CommandText = sql; 
        cmd.Connection = conn; 
        SqlDataReader dr; 
        dr = cmd.ExecuteReader(); 
        int RecordCount = -1; 
        while (dr.Read()) 
        { 
            RecordCount = int.Parse(dr[0].ToString()); 
        } 
        CloseConn(); 
        return RecordCount; 
    } 
    /// <summary> 
    /// 自定义的功能警告 
    /// </summary> 
    /// <param name="str">弹出信息框内容</param> 
    public void SetAlert(string str) 
    { 
        HttpContext.Current.Response.Write("<script language='JavaScript' type='text/JavaScript'>alert('" + str + "');</script>"); 
    } 
    //返回上一页 
    public void AddErro(string message) 
    { 
        HttpContext.Current.Response.Write("<script>alert('" + message + "');history.back(-1);</script>"); 
    } 
    //关闭窗口 
    public void SetCloseWindow() 
    { 
        HttpContext.Current.Response.Write("<script language='JavaScript' type='text/JavaScript'>window.close();</script>"); 
    } 
    /// <summary> 
    /// 地址跳转 
    /// </summary> 
    /// <param name="str">跳转地址</param> 
    public void SetLocation(string str) 
    { 
        HttpContext.Current.Response.Write("<script language='JavaScript' type='text/JavaScript'>location='" + str + "';</script>"); 
    } 
    public string AjaxSetAlert(string str) 
    { 
        return "<script language='JavaScript' type='text/JavaScript'>alert('" + str + "');</script>"; 
    } 
    //过滤非法字符 
    public string FilterStr(string Str) 
    { 
        Str = Str.Trim(); 
        Str = Str.Replace("*", ""); 
        Str = Str.Replace("=", ""); 
        Str = Str.Replace("/", ""); 
        Str = Str.Replace("$", ""); 
        Str = Str.Replace("#", ""); 
        Str = Str.Replace("@", ""); 
        Str = Str.Replace("&", ""); 
        return Str; 
    } 
    //Md5加密算法 
    public string md5(string str) 
    { 
        return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "md5").ToLower().Substring(0, 12); 
    } 
    public string RndNum(int VcodeNum) 
    { 
        string Vchar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,P,Q,R,S,T,U,W,X"; 
        string[] VcArray = Vchar.Split(new Char[] { ',' }); //将字符串生成数组 
        string VNum = ""; 
        int temp = -1; 
        Random rand = new Random(); 
        for (int i = 1; i < VcodeNum + 1; i++) 
        { 
            if (temp != -1) 
            { 
                rand = new Random(i * temp * unchecked((int)DateTime.Now.Ticks)); 
            } 
            int t = rand.Next(31);            //数组一般从0开始读取,所以这里为31*Rnd 
            if (temp != -1 && temp == t) 
            { 
                return RndNum(VcodeNum); 
            } 
            temp = t; 
            VNum += VcArray[t]; 
        } 
        return VNum; 
    } 
}