久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

ASP.NET對SQLServer的通用數(shù)據(jù)庫訪問類

 悟靜 2012-11-11
怎么說呢,作為程序員,,我們明天都應(yīng)該學(xué)習(xí)新的知識。
以前我在對數(shù)據(jù)庫進行操作的時候都是在同一頁面對數(shù)據(jù)庫進行操作。這樣的話,就是操作繁瑣,,而且需要重復(fù)的書寫對數(shù)據(jù)庫操作的代碼,這樣不僅浪費了很多的時間,,而且也使得代碼看起來非常的凌亂,。至從接觸到了三層架構(gòu)的思想,明白了分層的好處,,還有面向?qū)ο蟮暮锰?。今天?A class=keylink href="http://book./" target=_blank>看書的時候,,看到周金橋老師的對數(shù)據(jù)庫訪問的通用類,,就試著模仿的寫了一個,代碼清晰,,而且很實用,,包括了對數(shù)據(jù)庫的所有的常用的操作。
 
 
/// <summary>
   /// 數(shù)據(jù)庫訪問通用類
   /// </summary>
   public class SqlHelper
   {
       private string connectionString;
 
       /// <summary>
       /// 設(shè)定數(shù)據(jù)庫訪問字符串
       /// </summary>
       public string ConnectionString
       {
           
           set { connectionString = value; }
       }
 
       /// <summary>
       /// 構(gòu)造函數(shù)
       /// </summary>
       /// <param name="connectionString">數(shù)據(jù)庫訪問字符串</param>
       public SqlHelper(string connectionString)
       {
           this.connectionString = connectionString;
       }
 
       /// <summary>
       /// 執(zhí)行一個查詢,并返回查詢結(jié)果
       /// </summary>
       /// <param name="sql">要執(zhí)行的sql語句</param>
       /// <param name="commandType">要執(zhí)行的查詢語句的類型,,如存儲過程或者sql文本命令</param>
       /// <returns>返回查詢結(jié)果集</returns>
       public DataTable ExecuteDataTable(string sql,CommandType commandType)
       {
           return ExecuteDataTable(sql, commandType, null);
       }
 
       /// <summary>
       /// 執(zhí)行一個查詢,,并返回結(jié)果集
       /// </summary>
       /// <param name="sql">要執(zhí)行的sql文本命令</param>
       /// <returns>返回查詢的結(jié)果集</returns>
       public DataTable ExecuteDataTable(string sql)
       {
           return ExecuteDataTable(sql, CommandType.Text, null);
       }
 
 
       /// <summary>
       /// 執(zhí)行一個查詢,并返回查詢結(jié)果
       /// </summary>
       /// <param name="sql">要執(zhí)行的sql語句</param>
       /// <param name="commandtype">要執(zhí)行查詢語句的類型,,如存儲過程或者sql文本命令</param>
       /// <param name="parameters">Transact-SQL語句或者存儲過程參數(shù)數(shù)組</param>
       /// <returns></returns>
       public DataTable ExecuteDataTable(string sql, CommandType commandtype, SqlParameter[] parameters)
       {
           DataTable data = new DataTable(); //實例化datatable,,用于裝載查詢結(jié)果集
           using (SqlConnection con = new SqlConnection(connectionString))
           {
               using (SqlCommand cmd = new SqlCommand(sql, con))
               {
                   cmd.CommandType = commandtype;//設(shè)置command的commandType為指定的Commandtype
                   //如果同時傳入了參數(shù),則添加這些參數(shù)
                   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">要執(zhí)行的SQl查詢命令</param>
       /// <returns></returns>
       public SqlDataReader ExecuteReader(string sql)
       {
           return ExecuteReader(sql, CommandType.Text, null);
       }
 
       /// <summary>
       /// 
       /// </summary>
       /// <param name="sql">要執(zhí)行的sql語句</param>
       /// <param name="commandType">要執(zhí)行查詢語句的類型,,如存儲過程或者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參數(shù)指示關(guān)閉reader對象時關(guān)閉與其關(guān)聯(lián)的Connection對象
           return cmd.ExecuteReader(CommandBehavior.CloseConnection);
       }
 
       /// <summary>
       /// 執(zhí)行一個查詢,,返回結(jié)果集的首行首列。忽略其他行,,其他列
       /// </summary>
       /// <param name="sql">要執(zhí)行的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">參數(shù)類型</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>
       /// 對數(shù)據(jù)庫進行增刪改的操作
       /// </summary>
       /// <param name="sql">要執(zhí)行的sql命令</param>
       /// <returns></returns>
       public int ExecuteNonQuery(string sql)
       {
           return ExecuteNonQuery(sql, CommandType.Text, null);
       }
 
       /// <summary>
       /// 數(shù)據(jù)庫進行增刪改的操作
       /// </summary>
       /// <param name="sql">對數(shù)據(jù)庫進行操作的sql命令</param>
       /// <param name="commandType">要執(zhí)行查詢語句的類型,,如存儲過程或者sql文本命令</param>
       /// <returns></returns>
       public int ExecuteNonQuery(string sql, CommandType commandType)
       {
           return ExecuteNonQuery(sql, commandType, null);
       }
 
       /// <summary>
       /// 對數(shù)據(jù)庫進行增刪改的操作
       /// </summary>
       /// <param name="sql">要執(zhí)行的sql語句</param>
       /// <param name="commandType">要執(zhí)行的查詢語句類型,如存儲過程或者sql文本命令</param>
       /// <param name="parameters">Transact-SQL語句或者存儲過程的參數(shù)數(shù)組</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>
       /// 返回當前連接的數(shù)據(jù)庫中所有用戶創(chuàng)建的數(shù)據(jù)庫
       /// </summary>
       /// <returns></returns>
       public DataTable GetTables()
       {
           DataTable table = null;
           using (SqlConnection con = new SqlConnection(connectionString))
           {
               con.Open();
               table = con.GetSchema("Tables");
 
           }
           return table;
       }
   }
如果我們建立了一個對數(shù)據(jù)庫訪問的通用類以后,,在隨數(shù)據(jù)庫進行操作的時候嗎,,就只需要先實例化對象,然后根據(jù)自己的需要,,調(diào)用相應(yīng)的方法就可以完成對數(shù)據(jù)庫的所有操作,。這就是數(shù)據(jù)庫訪問層和業(yè)務(wù)邏輯層分開的好處。
這樣書寫的代碼,,可以大大的減少我們代碼的復(fù)雜度,。而且,繁瑣度也大大的降低了,。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約