• 技术文章 >后端开发 >C#.Net教程

    ASP.NET之数据访问类代码详解

    Y2JY2J2017-04-27 10:08:49原创957
    using System; 
    using System.Data; 
    using System.Data.SqlClient;  
    namespace SysClassLibrary 
    { 
    /// <summary> 
    /// DataAccess 的摘要说明。 
    /// <description>数据处理基类,调用方式:DataAccess.DataSet((string)sqlstr);或者DataAccess.DataSet((string)sqlstr,ref DataSet ds); </description> 
    /// </summary> 
    public class DataAccess 
    { 
    #region 属性 
    protected static SqlConnection conn=new SqlConnection(); 
    protected static SqlCommand comm=new SqlCommand(); 
    #endregion 
    public DataAccess() 
    { 
    //init(); 
    } 
    #region 内部函数 静态方法中不会执行DataAccess()构造函数 
    /// <summary> 
    /// 打开数据库连接 
    /// </summary> 
    private static void openConnection() 
    { 
    if (conn.State == ConnectionState.Closed) 
    { 
    //SysConfig.ConnectionString 为系统配置类中连接字符串,如:"server=localhost;database=databasename;uid=sa;pwd=;" 
    conn.ConnectionString = SysConfig.ConnectionString ; 
    comm.Connection =conn; 
    try 
    { 
    conn.Open(); 
    } 
    catch(Exception e) 
    { 
    throw new Exception(e.Message); 
    } 
    } 
    } 
    /// <summary> 
    /// 关闭当前数据库连接 
    /// </summary> 
    private static void closeConnection() 
    { 
    if(conn.State == ConnectionState.Open) 
    conn.Close(); 
    conn.Dispose(); 
    comm.Dispose(); 
    } 
    #endregion 
    /// <summary> 
    /// 执行Sql查询语句 
    /// </summary> 
    /// <param name="sqlstr">传入的Sql语句</param> 
    public static void ExecuteSql(string sqlstr) 
    { 
    try 
    { 
    openConnection(); 
    comm.CommandType =CommandType.Text ; 
    comm.CommandText =sqlstr; 
    comm.ExecuteNonQuery();  
    } 
    catch(Exception e) 
    { 
    throw new Exception(e.Message); 
    } 
    finally 
    { 
    closeConnection(); 
    } 
    } 
    /// <summary> 
    /// 执行存储过程 
    /// </summary> 
    /// <param name="procName">存储过程名</param> 
    /// <param name="coll">SqlParameters 集合</param> 
    public static void ExecutePorcedure(string procName,SqlParameter[] coll) 
    { 
    try 
    { 
    openConnection(); 
    for(int i=0;i<coll.Length;i++) 
    { 
    comm.Parameters .Add(coll); 
    } 
    comm.CommandType=CommandType.StoredProcedure ; 
    comm.CommandText =procName; 
    comm.ExecuteNonQuery(); 
    } 
    catch(Exception e) 
    { 
    throw new Exception(e.Message); 
    } 
    finally 
    { 
    comm.Parameters.Clear(); 
    closeConnection(); 
    } 
    } 
    /// <summary> 
    /// 执行存储过程并返回数据集 
    /// </summary> 
    /// <param name="procName">存储过程名称</param> 
    /// <param name="coll">SqlParameter集合</param> 
    /// <param name="ds">DataSet </param> 
    public static void ExecutePorcedure(string procName,SqlParameter[] coll,ref DataSet ds) 
    { 
    try 
    { 
    SqlDataAdapter da=new SqlDataAdapter(); 
    openConnection(); 
    for(int i=0;i<coll.Length;i++) 
    { 
    comm.Parameters .Add(coll); 
    } 
    comm.CommandType=CommandType.StoredProcedure ; 
    comm.CommandText =procName; 
    da.SelectCommand =comm; 
    da.Fill(ds); 
    } 
    catch(Exception e) 
    { 
    throw new Exception(e.Message); 
    } 
    finally 
    { 
    comm.Parameters.Clear(); 
    closeConnection(); 
    } 
    } 
    /// <summary> 
    /// 执行Sql查询语句并返回第一行的第一条记录,返回值为object 使用时需要拆箱操作 -> Unbox 
    /// </summary> 
    /// <param name="sqlstr">传入的Sql语句</param> 
    /// <returns>object 返回值 </returns> 
    public static object ExecuteScalar(string sqlstr) 
    { 
    object obj=new object(); 
    try 
    { 
    openConnection(); 
    comm.CommandType =CommandType.Text ; 
    comm.CommandText =sqlstr; 
    obj=comm.ExecuteScalar();  
    } 
    catch(Exception e) 
    { 
    throw new Exception(e.Message); 
    } 
    finally 
    { 
    closeConnection(); 
    } 
    return obj; 
    } 
    /// <summary> 
    /// 执行Sql查询语句,同时进行事务处理 
    /// </summary> 
    /// <param name="sqlstr">传入的Sql语句</param> 
    public static void ExecuteSqlWithTransaction(string sqlstr) 
    { 
    SqlTransaction trans ; 
    trans=conn.BeginTransaction(); 
    comm.Transaction =trans; 
    try 
    { 
    openConnection(); 
    comm.CommandType =CommandType.Text ; 
    comm.CommandText =sqlstr; 
    comm.ExecuteNonQuery();  
    trans.Commit(); 
    } 
    catch 
    { 
    trans.Rollback(); 
    } 
    finally 
    { 
    closeConnection(); 
    } 
    } 
    /// <summary> 
    /// 返回指定Sql语句的SqlDataReader,请注意,在使用后请关闭本对象,同时将自动调用closeConnection()来关闭数据库连接 
    /// 方法关闭数据库连接 
    /// </summary> 
    /// <param name="sqlstr">传入的Sql语句</param> 
    /// <returns>SqlDataReader对象</returns> 
    public static SqlDataReader dataReader(string sqlstr) 
    { 
    SqlDataReader dr=null; 
    try 
    { 
    openConnection(); 
    comm.CommandText =sqlstr; 
    comm.CommandType =CommandType.Text ; 
    dr=comm.ExecuteReader(CommandBehavior.CloseConnection);  
    } 
    catch 
    { 
    try 
    { 
    dr.Close(); 
    closeConnection(); 
    } 
    catch 
    { 
    } 
    } 
    return dr; 
    } 
    /// <summary> 
    /// 返回指定Sql语句的SqlDataReader,请注意,在使用后请关闭本对象,同时将自动调用closeConnection()来关闭数据库连接 
    /// 方法关闭数据库连接 
    /// </summary> 
    /// <param name="sqlstr">传入的Sql语句</param> 
    /// <param name="dr">传入的ref DataReader 对象</param> 
    public static void dataReader(string sqlstr,ref SqlDataReader dr) 
    { 
    try 
    { 
    openConnection(); 
    comm.CommandText =sqlstr; 
    comm.CommandType =CommandType.Text ; 
    dr=comm.ExecuteReader(CommandBehavior.CloseConnection);  
    } 
    catch 
    { 
    try 
    { 
    if(dr!=null && !dr.IsClosed) 
    dr.Close(); 
    } 
    catch 
    { 
    } 
    finally 
    { 
    closeConnection(); 
    } 
    } 
    } 
    /// <summary> 
    /// 返回指定Sql语句的DataSet 
    /// </summary> 
    /// <param name="sqlstr">传入的Sql语句</param> 
    /// <returns>DataSet</returns> 
    public static DataSet dataSet(string sqlstr) 
    { 
    DataSet ds= new DataSet(); 
    SqlDataAdapter da=new SqlDataAdapter(); 
    try 
    { 
    openConnection(); 
    comm.CommandType =CommandType.Text ; 
    comm.CommandText =sqlstr; 
    da.SelectCommand =comm; 
    da.Fill(ds); 
    } 
    catch(Exception e) 
    { 
    throw new Exception(e.Message);  
    } 
    finally 
    { 
    closeConnection(); 
    } 
    return ds; 
    } 
    /// <summary> 
    /// 返回指定Sql语句的DataSet 
    /// </summary> 
    /// <param name="sqlstr">传入的Sql语句</param> 
    /// <param name="ds">传入的引用DataSet对象</param> 
    public static void dataSet(string sqlstr,ref DataSet ds) 
    { 
    SqlDataAdapter da=new SqlDataAdapter(); 
    try 
    { 
    openConnection(); 
    comm.CommandType =CommandType.Text ; 
    comm.CommandText =sqlstr; 
    da.SelectCommand =comm; 
    da.Fill(ds); 
    } 
    catch(Exception e) 
    { 
    throw new Exception(e.Message);  
    } 
    finally 
    { 
    closeConnection(); 
    } 
    } 
    /// <summary> 
    /// 返回指定Sql语句的DataTable 
    /// </summary> 
    /// <param name="sqlstr">传入的Sql语句</param> 
    /// <returns>DataTable</returns> 
    public static DataTable dataTable(string sqlstr) 
    { 
    SqlDataAdapter da=new SqlDataAdapter(); 
    DataTable datatable=new DataTable(); 
    try 
    { 
    openConnection(); 
    comm.CommandType =CommandType.Text ; 
    comm.CommandText =sqlstr; 
    da.SelectCommand =comm; 
    da.Fill(datatable); 
    } 
    catch(Exception e) 
    { 
    throw new Exception(e.Message);  
    } 
    finally 
    { 
    closeConnection(); 
    } 
    return datatable; 
    } 
    /// <summary> 
    /// 执行指定Sql语句,同时给传入DataTable进行赋值  
    /// </summary> 
    /// <param name="sqlstr">传入的Sql语句</param> 
    /// <param name="dt">ref DataTable dt </param> 
    public static void dataTable(string sqlstr,ref DataTable dt) 
    { 
    SqlDataAdapter da=new SqlDataAdapter(); 
    try 
    { 
    openConnection(); 
    comm.CommandType =CommandType.Text ; 
    comm.CommandText =sqlstr; 
    da.SelectCommand =comm; 
    da.Fill(dt); 
    } 
    catch(Exception e) 
    { 
    throw new Exception(e.Message);  
    } 
    finally 
    { 
    closeConnection(); 
    } 
    } 
    /// <summary> 
    /// 执行带参数存储过程并返回数据集合 
    /// </summary> 
    /// <param name="procName">存储过程名称</param> 
    /// <param name="parameters">SqlParameterCollection 输入参数</param> 
    /// <returns></returns> 
    public static DataTable dataTable(string procName,SqlParameterCollection parameters) 
    {  
    SqlDataAdapter da=new SqlDataAdapter(); 
    DataTable datatable=new DataTable(); 
    try 
    { 
    openConnection(); 
    comm.Parameters.Clear(); 
    comm.CommandType=CommandType.StoredProcedure ; 
    comm.CommandText =procName; 
    foreach(SqlParameter para in parameters) 
    { 
    SqlParameter p=(SqlParameter)para; 
    comm.Parameters.Add(p); 
    } 
    da.SelectCommand =comm; 
    da.Fill(datatable); 
    } 
    catch(Exception e) 
    { 
    throw new Exception(e.Message); 
    } 
    finally 
    { 
    closeConnection(); 
    } 
    return datatable; 
    } 
    public static DataView dataView(string sqlstr) 
    { 
    SqlDataAdapter da=new SqlDataAdapter(); 
    DataView dv=new DataView(); 
    DataSet ds=new DataSet(); 
    try 
    { 
    openConnection(); 
    comm.CommandType=CommandType.Text; 
    comm.CommandText =sqlstr; 
    da.SelectCommand =comm; 
    da.Fill(ds); 
    dv=ds.Tables[0].DefaultView; 
    } 
    catch(Exception e) 
    { 
    throw new Exception(e.Message); 
    } 
    finally 
    { 
    closeConnection(); 
    } 
    return dv; 
    } 
    } 
    }

    php入门到就业线上直播课:查看学习

    以上就是ASP.NET之数据访问类代码详解的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:ASP.NET 数据访问类
    上一篇:教你用C#检测含有中文字符串的实际长度 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• c语言标识符有哪些类型• c语言中源文件编译后生成什么文件• c语言本身有没有输入输出语句• c语言中的标识符是由什么组成• c语言中*p和p的区别是什么
    1/1

    PHP中文网