当前位置:数据库 > SQLServer >>

ASP.NET中SQL Server数据库访问通用类

 因为帮同学做毕设需要,着手学习ASP.NET。做这种B/S系统,听得最多的就是MVC三层架构。在这个常见的三层架构中,数据库访问层DAL对数据库的操作,最常见的有如下四种:
  1.非连接式查询,利用SqlDataAdapter对象的Fill()返回DataTable的结果集;
  2.连接式查询,利用SqlReader()返回DataReader对象实例;
  3.查询结果只有1行1列,利用SqlCommand的ExecuteScalar()进行。
  4.对数据库进行增、删、改、查操作,利用ExecuteNonQuery()进行。
  针对以上情况,分享的一个SQL Server数据库访问通用类。
1.非连接式查询,利用SqlDataAdapter对象的Fill()返回DataTable的结果集
    /// <summary>
    /// 执行一个查询,并返回结果集
    /// </summary>
    /// <param name="sql">要查询的SQL文本命令</param>
    /// <returns>查询结果集</returns>
    public DataTable ExecuteDataTable(string sql)
    {
        return ExecuteDataTable(sql, CommandType.Text, null);
    }

    /// <summary>
    /// 执行一个查询,并返回结果集
    /// </summary>
    /// <param name="sql">要查询的SQL文本命令</param>
    /// <param name="commandType">查询语句类型,存储过程或SQL文本命令</param>
    /// <returns>查询结果集</returns>
    public DataTable ExecuteDataTable(string sql, CommandType commandType)
    {
        return ExecuteDataTable(sql, commandType, null);
    }

    /// <summary>
    /// 执行一个查询,并返回结果集
    /// </summary>
    /// <param name="sql">要查询的SQL文本命令</param>
    /// <param name="commandType">查询语句类型,存储过程或SQL文本命令</param>
    /// <param name="parameters">T-SQL语句或存储过程的参数组</param>
    /// <returns>查询结果集</returns>
    public DataTable ExecuteDataTable(string sql, CommandType commandType, SqlParameter[] parameters)
    {
        //实例化DataTable,用于装载查询结果集
        DataTable data = new DataTable();
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            using (SqlCommand command = new SqlCommand(sql, connection))
            {
                //指定CommandType
                command.CommandType = commandType;
                if (parameters != null)
                {
                    foreach (SqlParameter parameter in parameters)
                    {
                        command.Parameters.Add(parameter);
                    }
                }
                //实例化SqlDataAdapter
                SqlDataAdapter adapter = new SqlDataAdapter(command);
                //填充DataTable
                adapter.Fill(data);
            }
        }
        return data;
    }

2.连接式查询,利用SqlReader()返回DataReader对象实例
    /// <summary>
    /// 返回一个DataReader对象实例
    /// </summary>
    /// <param name="sql">要查询的SQL文本命令</param>
    /// <returns>DataReader对象实例</returns>
    public SqlDataReader ExecuteReader(string sql)
    {
        return ExecuteReader(sql, CommandType.Text, null);
    }

    /// <summary>
    /// 返回一个DataReader对象实例
    /// </summary>
    /// <param name="sql">要查询的SQL文本命令</param>
    /// <param name="commandType">要执行的查询语句的类型,存储过程或SQL文本命令</param>
    /// <returns>DataReader对象实例</returns>
    public SqlDataReader ExecuteReader(string sql, CommandType commandType)
    {
        return ExecuteReader(sql, commandType, null);
    }

    /// <summary>
    /// 返回一个DataReader对象实例
    /// </summary>
    /// <param name="sql">要查询的SQL文本命令</param>
    /// <param name="commandType">要执行的查询语句的类型,存储过程或SQL文本命令</param>
    /// <param name="parameters">T-SQL语句或存储过程的参数数组</param>
    /// <returns>DataReader对象实例</returns>
    public SqlDataReader ExecuteReader(string sql, CommandType commandType, SqlParameter[] parameters)
    {
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            using (SqlCommand command = new SqlCommand(sql, connection))
            {
                if (parameters != null)
                {
                    foreach (SqlParameter parameter in parameters)
                    {
                      &

补充:Web开发 , ASP.Net ,
Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,