程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> ASP.NET基礎 >> ASP.NET對SQLServer的通用數據庫訪問類

ASP.NET對SQLServer的通用數據庫訪問類

編輯:ASP.NET基礎

本文模仿實現數據庫訪問的通用類,代碼清晰,而且很實用,包括了對數據庫的所有的常用的操作。

  /// <summary>
  /// 數據庫訪問通用類
  /// </summary>
  public class SqlHelper
  {
  private string connectionString;
  /// <summary>
  /// 設定數據庫訪問字符串
  /// </summary>
  public string ConnectionString
  {
  set { connectionString = value; }
  }
  /// <summary>
  /// 構造函數
  /// </summary>
  /// <param name="connectionString">數據庫訪問字符串</param>
  public SqlHelper(string connectionString)
  {
  this.connectionString = connectionString;
  }
  /// <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>
  /// <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>
  /// <param name="parameters">Transact-SQL語句或者存儲過程參數數組</param>
  /// <returns></returns>
  public DataTable ExecuteDataTable(string sql, CommandType commandtype, SqlParameter[] parameters)
  {
  DataTable data = new DataTable(); //實例化datatable,用於裝載查詢結果集
  using (SqlConnection con = new SqlConnection(connectionString))
  {
  using (SqlCommand cmd = new SqlCommand(sql, con))
  {
  cmd.CommandType = commandtype;//設置command的commandType為指定的Commandtype
  //如果同時傳入了參數,則添加這些參數
  if (parameters != null)
  {
  foreach (SqlParameter parameter in parameters)
  {
  cmd.Parameters.Add(parameter);
  }
  }
  //通過包含查詢sql的sqlcommand實例來實例化sqldataadapter
  SqlDataAdapter adapter = new SqlDataAdapter(cmd);
  adapter.Fill(data);//填充datatable
  }
  }
  return data;
  }
  /// <summary>
  /// 返回一個SqlDataReader對象的實例
  /// </summary>
  /// <param name="sql">要執行的SQl查詢命令</param>
  /// <returns></returns>
  public SqlDataReader ExecuteReader(string sql)
  {
  return ExecuteReader(sql, CommandType.Text, null);
  }
  /// <summary>
  ///
  /// </summary>
  /// <param name="sql">要執行的sql語句</param>
  /// <param name="commandType">要執行查詢語句的類型,如存儲過程或者SQl文本命令</param>
  /// <returns></returns>
  public SqlDataReader ExecuteReader(string sql,CommandType commandType)
  {
  return ExecuteReader(sql, commandType, null);
  }
  /// <summary>
  /// 返回一個sqldatareader對象的實例
  /// </summary>
  /// <param name="sql"></param>
  /// <param name="commandType"></param>
  /// <param name="parameters"></param>
  /// <returns></returns>
  public SqlDataReader ExecuteReader(string sql, CommandType commandType, SqlParameter[] parameters)
  {
  SqlConnection con = new SqlConnection(connectionString);
  SqlCommand cmd = new SqlCommand(sql, con);
  if (parameters != null)
  {
  foreach (SqlParameter parameter in parameters)
  {
  cmd.Parameters.Add(parameters);
  }
  }
  con.Open();
  //CommandBehavior.CloseConnection參數指示關閉reader對象時關閉與其關聯的Connection對象
  return cmd.ExecuteReader(CommandBehavior.CloseConnection);
  }
  /// <summary>
  /// 執行一個查詢,返回結果集的首行首列。忽略其他行,其他列
  /// </summary>
  /// <param name="sql">要執行的SQl命令</param>
  /// <returns></returns>
  public Object ExecuteScalar(string sql)
  {
  return ExecuteScalar(sql, CommandType.Text, null);
  }
  /// <summary>
  ///
  /// </summary>
  /// <param name="sql"></param>
  /// <param name="commandType"></param>
  /// <returns></returns>
  public Object ExecuteScalar(string sql, CommandType commandType)
  {
  return ExecuteScalar(sql, commandType, null);
  }
  /// <summary>
  ///
  /// </summary>
  /// <param name="sql"></param>
  /// <param name="commandType">參數類型</param>
  /// <param name="parameters"></param>
  /// <returns></returns>
  public Object ExecuteScalar(string sql,CommandType commandType, SqlParameter[] parameters)
  {
  Object result=null;
  SqlConnection con=new SqlConnection(connectionString);
  SqlCommand cmd=new SqlCommand(sql,con);
  cmd.CommandType= commandType;
  if(parameters!=null)
  {
  foreach (SqlParameter parapmeter in parameters)
  {
  cmd.Parameters.Add(parapmeter);
  }
  }
  con.Open();
  result=cmd.ExecuteScalar();
  con.Close();
  return result;
  }
  /// <summary>
  /// 對數據庫進行增刪改的操作
  /// </summary>
  /// <param name="sql">要執行的sql命令</param>
  /// <returns></returns>
  public int ExecuteNonQuery(string sql)
  {
  return ExecuteNonQuery(sql, CommandType.Text, null);
  }
  /// <summary>
  /// 數據庫進行增刪改的操作
  /// </summary>
  /// <param name="sql">對數據庫進行操作的sql命令</param>
  /// <param name="commandType">要執行查詢語句的類型,如存儲過程或者sql文本命令</param>
  /// <returns></returns>
  public int ExecuteNonQuery(string sql, CommandType commandType)
  {
  return ExecuteNonQuery(sql, commandType, null);
  }
  /// <summary>
  /// 對數據庫進行增刪改的操作
  /// </summary>
  /// <param name="sql">要執行的sql語句</param>
  /// <param name="commandType">要執行的查詢語句類型,如存儲過程或者sql文本命令</param>
  /// <param name="parameters">Transact-SQL語句或者存儲過程的參數數組</param>
  /// <returns></returns>
  public int ExecuteNonQuery(string sql, CommandType commandType, SqlParameter[] parameters)
  {
  int count = 0;
  SqlConnection con = new SqlConnection(connectionString);
  SqlCommand cmd = new SqlCommand(sql, con);
  cmd.CommandType = commandType;
  if (parameters != null)
  {
  foreach(SqlParameter parameter in parameters)
  {
  cmd.Parameters.Add(parameter);
  }
  }
  con.Open();
  count = cmd.ExecuteNonQuery();
  con.Close();
  return count;
  }
  /// <summary>
  /// 返回當前連接的數據庫中所有用戶創建的數據庫
  /// </summary>
  /// <returns></returns>
  public DataTable GetTables()
  {
  DataTable table = null;
  using (SqlConnection con = new SqlConnection(connectionString))
  {
  con.Open();
  table = con.GetSchema("Tables");
  }
  return table;
  }
  }

    如果我們建立了一個對數據庫訪問的通用類以後,在隨數據庫進行操作的時候嗎,就只需要先實例化對象,然後根據自己的需要,調用相應的方法就可以完成對數據庫的所有操作。這就是數據庫訪問層和業務邏輯層分開的好處。
    這樣書寫的代碼,可以大大的減少我們代碼的復雜度,而且,繁瑣度也大大的降低了。

以上就是本文的全部內容,希望對大家的學習有所幫助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved