欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

輕輕的我走了,正如我輕輕的來…——ADO.NET核

系統 2630 0

?

輕輕的我走了,正如我輕輕的來…——ADO.NET核心類的滅度與SQLHelper的誕生——十八相送(下)

ADO.NET的SqlServer.NET數據提供程序,核心的類有4個,而在這個訂餐系統中,我們只使用了3個,SqlConnection、SqlCommand、SqlDataReader,就是這3個核心類,我們也將要把它們封裝到SQLHelper.cs類中。

?

前面,我們在使用這幾個類訪問數據庫的時候,有人,覺得很簡單;有人,甚至覺得很煩了。

?

我們再送它們幾程吧,不由得想起了那句詩:

歡迎轉載,轉載請注明出處.更多文章請參閱博客 http://blog.csdn.com/yousuosi

?

?

?

輕輕的我走了,

正如我輕輕的來;

?

我輕輕的招手,

作別西天的云彩……

?

?

四相送,送到代碼頁里的類SQLHelper中

    using System; 
using System.Data; 
using System.Data.SqlClient; 
using System.Configuration; 
using System.Collections.Generic; 
using WestGarden.Model; 
  
namespace WestGarden.Web 
{ 
    public partial class Default6 : System.Web.UI.Page 
    { 
        protected void Page_Load(object sender, EventArgs e) 
        { 
            IList<CategoryInfo> catogories = new List<CategoryInfo>(); 
  
            string connectionString = ConfigurationManager.ConnectionStrings["NetShopConnString"].ConnectionString; 
            string cmdText = "SELECT * FROM Category"; 
  
            //使用靜態類,應用程序運行的時候,它就存在于內存中了,所以,也就不需要再new了。 
            SqlDataReader rdr = SqlHelper.ExecuteReader(connectionString, CommandType.Text, cmdText,null); 
  
            while (rdr.Read()) 
            { 
                CategoryInfo category = new CategoryInfo(rdr.GetString(0), rdr.GetString(1), rdr.GetString(2)); 
                catogories.Add(category); 
            } 
            rdr.Close(); 
  
            ddlCategories.DataSource = catogories; 
            ddlCategories.DataTextField = "Name"; 
            ddlCategories.DataValueField = "CategoryId"; 
            ddlCategories.DataBind(); 
        } 
    } 
  
    //這個類是靜態的,應用程序啟動時,自動駐留在內存中,所建連接,在使用過程中, 
    //也只是Close(),放回到連接池中。并沒有注銷Dispose(),可以下次連接時,快速使用。 
    public abstract class SqlHelper 
    { 
        public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) 
        { 
            SqlCommand cmd = new SqlCommand(); 
            SqlConnection conn = new SqlConnection(connectionString); 
  
            try
            { 
                //cmd.Connection = conn; 
                //cmd.CommandType = cmdType; 
                //cmd.CommandText = cmdText; 
                  
                //conn.Open(); 
  
                PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); 
  
                //如果創建了 SqlDataReader 并將 CommandBehavior 設置為 CloseConnection, 
                //則關閉 SqlDataReader 會自動關閉此連接。 
                SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); 
                cmd.Parameters.Clear(); 
                return rdr; 
            } 
            catch
            { 
                conn.Close(); 
                throw; 
            } 
            //finally 
            //{ 
            //    conn.Close(); 
            //} 
        } 
  
        private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms) 
        { 
  
            if (conn.State != ConnectionState.Open) 
                conn.Open(); 
  
            cmd.Connection = conn; 
            cmd.CommandText = cmdText; 
  
            if (trans != null) 
                cmd.Transaction = trans; 
  
            cmd.CommandType = cmdType; 
  
            if (cmdParms != null) 
            { 
                foreach (SqlParameter parm in cmdParms) 
                    cmd.Parameters.Add(parm); 
            } 
        } 
    } 
}

  

?

五相送,送到App_Code文件夾中的類SQLHelper.cs中。

第一次在Web中添加類,會提示建立文件夾App_Code,放在這個文夾中的類,使用起來,和前面放在主頁中沒有任何區別,不需要添加引用,也不需要using…

    using System; 
using System.Configuration; 
using System.Data; 
using System.Data.SqlClient; 
using System.Collections; 
  
namespace WestGarden.Web 
{ 
  
    /// <summary> 
    /// SQLHelper 的摘要說明 
    /// </summary> 
    //這個類是靜態的,應用程序啟動時,自動駐留在內存中,所建連接,在使用過程中, 
    //也只是Close(),放回到連接池中。并沒有注銷Dispose(),可以下次連接時,快速使用。 
    public abstract class SqlHelper 
    { 
        public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) 
        { 
            SqlCommand cmd = new SqlCommand(); 
            SqlConnection conn = new SqlConnection(connectionString); 
  
            try
            { 
                //cmd.Connection = conn; 
                //cmd.CommandType = cmdType; 
                //cmd.CommandText = cmdText; 
  
                //conn.Open(); 
  
                PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); 
  
                //如果創建了 SqlDataReader 并將 CommandBehavior 設置為 CloseConnection, 
                //則關閉 SqlDataReader 會自動關閉此連接。 
                SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); 
                cmd.Parameters.Clear(); 
                return rdr; 
            } 
            catch
            { 
                conn.Close(); 
                throw; 
            } 
            //finally 
            //{ 
            //    conn.Close(); 
            //} 
        } 
  
        private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms) 
        { 
  
            if (conn.State != ConnectionState.Open) 
                conn.Open(); 
  
            cmd.Connection = conn; 
            cmd.CommandText = cmdText; 
  
            if (trans != null) 
                cmd.Transaction = trans; 
  
            cmd.CommandType = cmdType; 
  
            if (cmdParms != null) 
            { 
                foreach (SqlParameter parm in cmdParms) 
                    cmd.Parameters.Add(parm); 
            } 
        } 
    } 
}
  

?

此時,主頁代碼不需要做任何改變,在這里,就不貼出來了。

?

六相送,送到類庫DBUtility中的類SQLHelper.cs中。

把類建立在類庫DBUtility中,使用起來就不一樣了。第一,要在Web中添加引用→項目→DBUtility;第二,要使用using WestGarden.DBUtility。使用類庫中的類,都需要這么兩步,如果這兩步都不少,還是出錯的話,那,極有可能是這個類庫單獨編譯就沒有通過,沒有生成dll文件。

    using System; 
using System.Configuration; 
using System.Data; 
using System.Data.SqlClient; 
using System.Collections; 
  
namespace WestGarden.DBUtility 
{ 
  
    /// <summary> 
    /// SQLHelper 的摘要說明 
    /// </summary> 
    //這個類是靜態的,應用程序啟動時,自動駐留在內存中,所建連接,在使用過程中, 
    //也只是Close(),放回到連接池中。并沒有注銷Dispose(),可以下次連接時,快速使用。 
    public abstract class SqlHelper 
    { 
        public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) 
        { 
            SqlCommand cmd = new SqlCommand(); 
            SqlConnection conn = new SqlConnection(connectionString); 
  
            try
            { 
                //cmd.Connection = conn; 
                //cmd.CommandType = cmdType; 
                //cmd.CommandText = cmdText; 
  
                //conn.Open(); 
  
                PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); 
  
                //如果創建了 SqlDataReader 并將 CommandBehavior 設置為 CloseConnection, 
                //則關閉 SqlDataReader 會自動關閉此連接。 
                SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); 
                cmd.Parameters.Clear(); 
                return rdr; 
            } 
            catch
            { 
                conn.Close(); 
                throw; 
            } 
            //finally 
            //{ 
            //    conn.Close(); 
            //} 
        } 
  
        private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms) 
        { 
  
            if (conn.State != ConnectionState.Open) 
                conn.Open(); 
  
            cmd.Connection = conn; 
            cmd.CommandText = cmdText; 
  
            if (trans != null) 
                cmd.Transaction = trans; 
  
            cmd.CommandType = cmdType; 
  
            if (cmdParms != null) 
            { 
                foreach (SqlParameter parm in cmdParms) 
                    cmd.Parameters.Add(parm); 
            } 
        } 
    } 
}

  

?

此時,主頁代碼,只多了一句using WestGarden.DBUtility;在我們這個訂餐系統中,類別表主要使用了兩種呈現方式:下拉列表框和Repeater,這里,我們把使用Repeater的后臺代碼貼一下吧,前臺代碼,就略了…

    sing System; 
using System.Data; 
using System.Data.SqlClient; 
using System.Configuration; 
using System.Collections.Generic; 
using WestGarden.Model; 
using WestGarden.DBUtility; 
  
namespace WestGarden.Web 
{ 
    public partial class Default8 : System.Web.UI.Page 
    { 
        protected void Page_Load(object sender, EventArgs e) 
        { 
            IList<CategoryInfo> catogories = new List<CategoryInfo>(); 
  
            string connectionString = ConfigurationManager.ConnectionStrings["NetShopConnString"].ConnectionString; 
            string cmdText = "SELECT * FROM Category"; 
  
            //使用靜態類,可直接調用,不需要new。 
            SqlDataReader rdr = SqlHelper.ExecuteReader(connectionString, CommandType.Text, cmdText,null); 
  
            while (rdr.Read()) 
            { 
                CategoryInfo category = new CategoryInfo(rdr.GetString(0), rdr.GetString(1), rdr.GetString(2)); 
                catogories.Add(category); 
            } 
            rdr.Close(); 
  
            repCategories.DataSource = catogories; 
            repCategories.DataBind(); 
        } 
    }  
}

  

?

一點說明:

類庫DBUtility中的SQLHelper.cs,使用了抽象類和靜態函數。這個類,使用的時候,不需要實例化,可以直接調用。但,還不完全是微軟的SQLHelper,進一步的改進,是把連接字符串放在Web.config文件中,并建立了連接池,而在SQLHelper中讀出來,放在靜態的字符串中。這會進一步改進它的性能。

另:我們目前使用的這個SQLHelper,似乎并不是微軟的最新版本,最新版本的SQLHelper又做了哪些改進,它的詳細的運行機制怎么樣,有待于大家共同的探討哈...

?更多文章請參閱博客 http://blog.csdn.com/yousuosi

輕輕的我走了,正如我輕輕的來…——ADO.NET核心類的滅度與SQLHelper的誕生——十八相送(下)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久综合久色欧美综合狠狠 | 国产精品日韩欧美 | 亚洲欧美在线观看 | 91短视频在线观看 | A片欧美乱妇高特黄AA片片 | 欧美a级在线观看 | 国产老女人精品毛片久久 | 国产伦精品一区二区三区高清 | 亚洲国产婷婷香蕉久久久久久99 | 久久精精 | 精品一区二区视频 | 欧美色呦呦 | 欧美在线电影 | 国产精品三级久久久久久电影 | 一国产一级淫片a免费播放口 | 第一福利在线观看 | 97麻豆精品国产自产在线观看 | av看片网站 | 亚洲婷婷国产精品电影人久久 | 国产欧美日韩一区二区三区四区 | 日本一区二区在线视频 | 亚洲五月婷 | 青青草在线视频免费观看 | 日韩精品视频免费在线观看 | 在线a人片免费观看国产 | 久久精品视频5 | 免费看淫片 | 男人色综合 | 日本最色网站 | 日韩一区不卡 | 日韩在线免费 | 国产麻豆剧传媒精品好看的片 | 日韩二区 | 特黄做愛又硬又大A片视频 小视频在线看 | 欧美视频综合 | 亚洲欧美日韩综合二区三区 | 国产免费又色又爽又黄的网站 | 久久九 | 一级黄色大毛片 | 色综合久久天天综合网 | 午夜性色一区二区三区不卡视频 |