乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      (新 精)網(wǎng)站設(shè)計--創(chuàng)建公共類

       悟靜 2012-02-16
       創(chuàng)建公共類(1)

      在網(wǎng)站開發(fā)項目中以類的形式來組織、封裝一些常用的方法和事件,將會在編程過程中起到事半功倍的效果。本系統(tǒng)中創(chuàng)建了8個公共類文件,分別為:DataBase.cs(數(shù)據(jù)庫操作類)、AdminManage.cs(管理員功能模塊類)、CardManage.cs(帖子管理功能模塊類)、HostManage.cs(版主管理功能模塊類)、ImageManage.cs(頭像管理功能模塊類)、ModuleManage.cs(版塊管理功能模塊類)、RevertManage.cs(回帖管理功能模塊類)和UserManage.cs(用戶管理功能模塊類)。其中,數(shù)據(jù)層主要用來訪問SQL Server 2005數(shù)據(jù)庫,而其他功能模塊類主要用于處理業(yè)務(wù)邏輯功能,透徹地說,就是實現(xiàn)網(wǎng)頁與數(shù)據(jù)庫操作(數(shù)據(jù)層)之間的業(yè)務(wù)功能。各層之間的理論關(guān)系如圖23.8所示。

       
      (點擊查看大圖)圖23.8  各層之間關(guān)系圖

      創(chuàng)建類文件的方法為:在ASP.NET集成開發(fā)環(huán)境Visual Studio 2008的菜單中選擇"項目"/"添加新項"命令,在彈出的"添加新項"對話框中選擇"類"選項,并修改名稱為DataBase.cs,如圖23.9所示。

      注意:在ASP.NET中,App_Code文件夾專門用來存放一些應(yīng)用于全局的代碼(如公共類),如果沒有,可以在該項目上單擊鼠標右鍵,在彈出的快捷菜單中選擇"添加ASP.NET文件夾"/"App_Code"命令,添加一個App_Code文件夾。

       
      (點擊查看大圖)圖23.9  創(chuàng)建類文件

      1.數(shù)據(jù)庫操作類設(shè)計

      數(shù)據(jù)庫操作類主要實現(xiàn)的功能有:打開數(shù)據(jù)庫連接、關(guān)閉數(shù)據(jù)庫連接、釋放數(shù)據(jù)庫連接資源、傳入?yún)?shù)并且轉(zhuǎn)換為SqlParameter類型、執(zhí)行參數(shù)命令文本(無返回值)、執(zhí)行參數(shù)命令文本(有返回值)、將命令文本添加到SqlDataAdapter和將命令文本添加到SqlCommand。下面給出所有的數(shù)據(jù)庫操作類源代碼,并且作出詳細的介紹。

      在命名空間區(qū)域引用using System.Data.SqlClient命名空間。為了精確控制釋放未托管資源,必須實現(xiàn)DataBase類的System.IDisposable接口。IDisposable接口聲明了一個方法Dispose,該方法不帶參數(shù),返回Void。

      相關(guān)代碼如下:

      1. using System;  
      2. using System.Data;  
      3. using System.Configuration;  
      4. using System.Web;  
      5. using System.Web.Security;  
      6. using System.Web.UI;  
      7. using System.Web.UI.WebControls;  
      8. using System.Web.UI.WebControls.WebParts;  
      9. using System.Web.UI.HtmlControls;  
      10. using System.Data.SqlClient;  
      11. /// <summary> 
      12. /// DataBase 的摘要說明  
      13. /// </summary> 
      14. public class DataBase:IDisposable  
      15. {  
      16.     public DataBase()  
      17.     {  
      18.     }  
      19.     private SqlConnection con;  //創(chuàng)建連接對象  
      20. ……  
      21. ……下面編寫相關(guān)的功能方法  
      22. ……  

      建立數(shù)據(jù)的連接主要通過SqlConnection類實現(xiàn),并初始化數(shù)據(jù)庫連接字符串,然后通過State屬性判斷連接狀態(tài),如果數(shù)據(jù)庫連接狀態(tài)為關(guān),則打開數(shù)據(jù)庫連接。

      實現(xiàn)打開數(shù)據(jù)庫連接Open方法的代碼如下:

      1. #region   打開數(shù)據(jù)庫連接  
      2. /// <summary> 
      3. /// 打開數(shù)據(jù)庫連接  
      4. /// </summary> 
      5. private void Open()  
      6. {  
      7.     if (con == null)     // 打開數(shù)據(jù)庫連接  
      8.     {  
      9.         con = new SqlConnection(ConfigurationManager.
        AppSettings["ConnectionString"]);  
      10.     }  
      11.     if (con.State == System.Data.ConnectionState.Closed)  
      12.         con.Open();  
      13. }  
      14. #endregion 

      關(guān)閉數(shù)據(jù)庫連接主要通過SqlConnection對象的Close方法實現(xiàn)。自定義Close方法關(guān)閉數(shù)據(jù)庫連接的代碼如下:

      1. #region  關(guān)閉連接  
      2. /// <summary> 
      3. /// 關(guān)閉數(shù)據(jù)庫連接  
      4. /// </summary> 
      5. public void Close()  
      6. {  
      7.    if (con != null)  
      8.        con.Close();  
      9. }  
      10. #endregion 

      因為DataBase類使用System.IDisposable接口,IDisposable接口聲明了一個方法Dispose,所以在此應(yīng)完善IDisposable接口的Dispose方法,用來釋放數(shù)據(jù)庫連接資源。

      創(chuàng)建公共類(2)

      實現(xiàn)釋放數(shù)據(jù)庫連接資源的Dispose方法代碼如下:

      1. #region 釋放數(shù)據(jù)庫連接資源  
      2. /// <summary> 
      3. /// 釋放資源  
      4. /// </summary> 
      5. public void Dispose()  
      6. {  
      7.     // 確認連接是否已經(jīng)關(guān)閉  
      8.     if (con != null)  
      9.     {  
      10.         con.Dispose();  
      11.         con = null;  
      12.     }  
      13. }  
      14. #endregion 

      本系統(tǒng)向數(shù)據(jù)庫中讀寫數(shù)據(jù)是以參數(shù)形式實現(xiàn)的。MakeInParam方法用于傳入?yún)?shù),而MakeParam方法用于轉(zhuǎn)換參數(shù)。

      實現(xiàn)MakeInParam方法和MakeParam方法的完整代碼如下:

      1. #region   傳入?yún)?shù)并且轉(zhuǎn)換為SqlParameter類型  
      2. /// <summary> 
      3. /// 傳入?yún)?shù)  
      4. /// </summary> 
      5. /// <param name="ParamName">存儲過程名稱或命令文本</param> 
      6. /// <param name="DbType">參數(shù)類型</param></param> 
      7. /// <param name="Size">參數(shù)大小</param> 
      8. /// <param name="Value">參數(shù)值</param> 
      9. /// <returns>新的parameter 對象</returns> 
      10. public SqlParameter MakeInParam(string ParamName,
        SqlDbType DbType, int Size, object Value)  
      11. {  
      12.     return MakeParam(ParamName, DbType, Size, 
        ParameterDirection.Input, Value);  
      13. }  
      14. /// <summary> 
      15. /// 初始化參數(shù)值  
      16. /// </summary> 
      17. /// <param name="ParamName">存儲過程名稱或命令文本</param> 
      18. /// <param name="DbType">參數(shù)類型</param> 
      19. /// <param name="Size">參數(shù)大小</param> 
      20. /// <param name="Direction">參數(shù)方向</param> 
      21. /// <param name="Value">參數(shù)值</param> 
      22. /// <returns>新的parameter 對象</returns> 
      23. public SqlParameter MakeParam(string ParamName,
        SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)  
      24. {  
      25.     SqlParameter param;  
      26.     if (Size > 0)  
      27.         param = new SqlParameter(ParamName, DbType, Size);  
      28.     else  
      29.         param = new SqlParameter(ParamName, DbType);  
      30.     param.Direction = Direction;  
      31.     if (!(Direction == ParameterDirection.Output && Value == null))  
      32.         param.Value = Value;  
      33.     return param;  
      34. }  
      35. #endregion 

      RunProc方法為可重載方法,功能分別為執(zhí)行帶參數(shù)SqlParameter的命令文本。RunProc(string

      procName, SqlParameter[] prams)方法主要用于執(zhí)行添加、修改和刪除;RunProc(string procName)方法用來直接執(zhí)行SQL語句,如數(shù)據(jù)庫備份與數(shù)據(jù)庫恢復。

      實現(xiàn)可重載方法RunProc方法的完整代碼如下:

      1. #region   執(zhí)行參數(shù)命令文本(無數(shù)據(jù)庫中數(shù)據(jù)返回)  
      2. /// <summary> 
      3. /// 執(zhí)行命令  
      4. /// </summary> 
      5. /// <param name="procName">命令文本</param> 
      6. /// <param name="prams">參數(shù)對象</param> 
      7. /// <returns></returns> 
      8. public int RunProc(string procName, SqlParameter[] prams)  
      9. {  
      10.     SqlCommand cmd = CreateCommand(procName, prams);  
      11.     cmd.ExecuteNonQuery();  
      12.     this.Close();  
      13.     //得到執(zhí)行成功返回值  
      14.     return (int)cmd.Parameters["ReturnValue"].Value;  
      15. }  
      16. /// <summary> 
      17. /// 直接執(zhí)行SQL語句  
      18. /// </summary> 
      19. /// <param name="procName">命令文本</param> 
      20. /// <returns></returns> 
      21. public int RunProc(string procName)  
      22. {  
      23.     this.Open();  
      24.     SqlCommand cmd = new SqlCommand(procName, con);  
      25.     cmd.ExecuteNonQuery();  
      26.     this.Close();  
      27.     return 1;  
      28. }  
      29. #endregion 

      RunProcReturn方法為可重載方法,返回值為DataSet類型。功能分別為執(zhí)行帶參數(shù)SqlParameter的命令文本。下面代碼中RunProcReturn(string procName, SqlParameter[] prams,string tbName)方法主要用于執(zhí)行帶參數(shù)SqlParameter的查詢命令文本;RunProcReturn(string procName, string tbName)用于直接執(zhí)行查詢SQL語句。
      創(chuàng)建公共類(3)

      可重載方法RunProcReturn的完整代碼如下:

      1. #region   執(zhí)行參數(shù)命令文本(有返回值)  
      2. /// <summary> 
      3. /// 執(zhí)行查詢命令文本,并且返回DataSet數(shù)據(jù)集  
      4. /// </summary> 
      5. /// <param name="procName">命令文本</param> 
      6. /// <param name="prams">參數(shù)對象</param> 
      7. /// <param name="tbName">數(shù)據(jù)表名稱</param> 
      8. /// <returns></returns> 
      9. public DataSet RunProcReturn(string procName, 
        SqlParameter[] prams,string tbName)  
      10. {  
      11.     SqlDataAdapter dap=CreateDataAdaper(procName, prams);  
      12.     DataSet ds = new DataSet();  
      13.     dap.Fill(ds,tbName);  
      14.     this.Close();  
      15.     //得到執(zhí)行成功返回值  
      16.     return ds;  
      17. }  
      18. /// <summary> 
      19. /// 執(zhí)行命令文本,并且返回DataSet數(shù)據(jù)集  
      20. /// </summary> 
      21. /// <param name="procName">命令文本</param> 
      22. /// <param name="tbName">數(shù)據(jù)表名稱</param> 
      23. /// <returns>DataSet</returns> 
      24. public DataSet RunProcReturn(string procName, string tbName)  
      25. {  
      26.     SqlDataAdapter dap = CreateDataAdaper(procName, null);  
      27.     DataSet ds = new DataSet();  
      28.     dap.Fill(ds, tbName);  
      29.     this.Close();  
      30.     //得到執(zhí)行成功返回值  
      31.     return ds;  
      32. }  
      33. #endregion 

      CreateDataAdaper方法可以將帶參數(shù)SqlParameter的命令文本添加到SqlDataAdapter中,并執(zhí)行命令文本。

      CreateDataAdaper方法的完整代碼如下:

      1. #region 將命令文本添加到SqlDataAdapter  
      2. /// <summary> 
      3. /// 創(chuàng)建一個SqlDataAdapter對象,以此來執(zhí)行命令文本  
      4. /// </summary> 
      5. /// <param name="procName">命令文本</param> 
      6. /// <param name="prams">參數(shù)對象</param> 
      7. /// <returns></returns> 
      8. private SqlDataAdapter CreateDataAdaper
        (string procName, SqlParameter[] prams)  
      9. {  
      10.     this.Open();  
      11.     SqlDataAdapter dap = new SqlDataAdapter(procName,con);  
      12.     dap.SelectCommand.CommandType = 
        CommandType.Text;  //執(zhí)行類型:命令文本  
      13.     if (prams != null)  
      14.     {  
      15.         foreach (SqlParameter parameter in prams)  
      16.             dap.SelectCommand.Parameters.Add(parameter);  
      17.     }  
      18.     //加入返回參數(shù)  
      19.     dap.SelectCommand.Parameters.Add(new 
        SqlParameter("ReturnValue", SqlDbType.Int, 4,  
      20.         ParameterDirection.ReturnValue, false, 0, 0,  
      21.         string.Empty, DataRowVersion.Default, null));  
      22.     return dap;  
      23. }  
      24. #endregion 

      CreateCommand方法可以將帶參數(shù)SqlParameter的命令文本添加到CreateCommand中,并執(zhí)行命令文本。

      CreateCommand方法的完整代碼如下:

      1. #region   將命令文本添加到SqlCommand  
      2. /// <summary> 
      3. /// 創(chuàng)建一個SqlCommand對象,以此來執(zhí)行命令文本  
      4. /// </summary> 
      5. /// <param name="procName">命令文本</param> 
      6. /// <param name="prams"命令文本所需參數(shù)</param> 
      7. /// <returns>返回SqlCommand對象</returns> 
      8. private SqlCommand CreateCommand(string procName, 
        SqlParameter[] prams)  
      9. {  
      10.     //確認打開連接  
      11.     this.Open();  
      12.     SqlCommand cmd = new SqlCommand(procName, con);  
      13.     cmd.CommandType = CommandType.Text;//執(zhí)行類型:命令文本  
      14.     //依次把參數(shù)傳入命令文本  
      15.     if (prams != null)  
      16.     {  
      17.         foreach (SqlParameter parameter in prams)  
      18.             cmd.Parameters.Add(parameter);  
      19.     }  
      20.     //加入返回參數(shù)  
      21.     cmd.Parameters.Add(  
      22.         new SqlParameter("ReturnValue", SqlDbType.Int, 4,  
      23.         ParameterDirection.ReturnValue, false, 0, 0,  
      24.         string.Empty, DataRowVersion.Default, null));  
      25.     return cmd;  
      26. }  
      27. #endregion 

      版塊管理功能模塊類

      版塊管理功能模塊類主要用于處理社區(qū)網(wǎng)中有關(guān)版塊的業(yè)務(wù)邏輯功能。由于篇幅有限,其他功能模塊類的源代碼可參見本書附帶光盤。

      版塊管理功能模塊類主要用于實現(xiàn)版塊信息的添加、修改、刪除以及各種查詢方式。以下方法提供給陳述層調(diào)用,從編碼的角度出發(fā),這些方法的實現(xiàn)是建立在數(shù)據(jù)層(數(shù)據(jù)庫操作類DataBase.cs)的基礎(chǔ)上的,下面將詳細介紹。

      在版塊管理功能模塊類中,首先定義版塊信息的數(shù)據(jù)結(jié)構(gòu),代碼如下:

      1. #region 定義版塊--數(shù)據(jù)結(jié)構(gòu)  
      2.     private string moduleid = "";  
      3.     private string modulename = "";  
      4.     /// <summary> 
      5.     /// 版塊編號  
      6.     /// </summary> 
      7.     public string ModuleID  
      8.     {  
      9.         get { return moduleid; }  
      10.         set { moduleid = value; }  
      11.     }  
      12.     /// <summary> 
      13.     /// 版塊名稱  
      14.     /// </summary> 
      15.     public string ModuleName  
      16.     {  
      17.         get { return modulename; }  
      18.         set { modulename = value; }  
      19.     }  
      20.     #endregion 

      GetMID方法主要用于實現(xiàn)自動生成版塊編號功能,代碼如下:

      1. #region 自動生成版塊編號  
      2.  /// <summary> 
      3.  /// 自動生成版塊編號  
      4.  /// </summary> 
      5.  /// <returns></returns> 
      6.  public string GetMID()  
      7.  {  
      8.      DataSet ds = GetAllModule("tb_Module");  
      9.      string strCID = "";  
      10.      if (ds.Tables[0].Rows.Count == 0)  
      11.          strCID = "M1001";  
      12.      else  
      13.          strCID = "M" + (Convert.ToInt32(ds.
        Tables[0].Rows[ds.Tables[0].Rows.Count - 1][0].
        ToString().Substring(1, 4)) + 1);  
      14.      return strCID;  
      15.  }  
      16.  #endregion 

      AddModule方法主要用于實現(xiàn)添加版塊信息功能,關(guān)鍵技術(shù)為:創(chuàng)建SqlParameter參數(shù)數(shù)組,通過數(shù)據(jù)庫操作類(DataBase.cs)中MakeInParam方法將參數(shù)值轉(zhuǎn)換為SqlParameter類型,儲存在數(shù)組中,最后調(diào)用數(shù)據(jù)庫操作類(DataBase.cs)中的RunProc方法執(zhí)行命令文本。代碼如下:

      1. #region 添加--版塊信息  
      2. /// <summary> 
      3. /// 添加--版塊信息  
      4. /// </summary> 
      5. /// <param name="modulemanage"></param> 
      6. /// <returns></returns> 
      7. public int AddModule(ModuleManage modulemanage)  
      8. {  
      9.     SqlParameter[] prams = {  
      10. ata.MakeInParam("@moduleid",  SqlDbType.NVarChar, 
        50, modulemanage.ModuleID),  
      11.         data.MakeInParam("@modulename",  
        SqlDbType.NVarChar, 100, modulemanage.ModuleName),  
      12. ;  
      13.     return (data.RunProc("INSERT INTO tb_Module 
        (版塊編號,版塊名稱) VALUES (@moduleid,@modulename)", prams));  
      14. }  
      15. #endregion 

      UpdateModule方法主要用于實現(xiàn)修改版塊信息功能,代碼如下:

      1. #region 修改--版塊信息  
      2. /// <summary> 
      3. /// 修改--版塊信息  
      4. /// </summary> 
      5. /// <param name="modulemanage"></param> 
      6. /// <returns></returns> 
      7. public int UpdateModule(ModuleManage modulemanage)  
      8. {  
      9.     SqlParameter[] prams = {  
      10. ata.MakeInParam("@moduleid",  SqlDbType.NVarChar, 
        50, modulemanage.ModuleID),  
      11.         data.MakeInParam("@modulename",  
        SqlDbType.NVarChar, 100, modulemanage.ModuleName),  
      12. ;  
      13.     return (data.RunProc("update tb_Module set 
        版塊名稱=@modulename where 版塊編號=@moduleid", prams));  
      14. }  
      15. #endregion 

      DeleteModule方法主要用于實現(xiàn)根據(jù)版塊編號刪除版塊信息功能,代碼如下:

      1.  #region 刪除--版塊信息  
      2.  /// <summary> 
      3.  /// 刪除--版塊信息  
      4.  /// </summary> 
      5.  /// <param name="modulemanage"></param> 
      6.  /// <returns></returns> 
      7.  public int DeleteModule(ModuleManage modulemanage)  
      8.  {  
      9.      SqlParameter[] prams = {  
      10. data.MakeInParam("@moduleid",  SqlDbType.NVarChar, 
        50, modulemanage.ModuleID),  
      11. };  
      12.      return (data.RunProc("delete from tb_Module 
        where 版塊編號=@moduleid", prams));  
      13.  }  
      14.  #endregion 

      FindModuleByID、FindModuleByName和GetAllModule方法分別用來實現(xiàn)根據(jù)"版塊編號"、"版塊名稱"得到所有版塊信息功能,代碼如下:

      1.   #region 查詢--版塊信息  
      2.   /// <summary> 
      3.   /// 根據(jù)--版塊編號--得到版塊信息  
      4.   /// </summary> 
      5.   /// <param name="modulemanage"></param> 
      6.   /// <param name="tbName"></param> 
      7.   /// <returns></returns> 
      8.   public DataSet FindModuleByID(ModuleManage modulemanage, string tbName)  
      9.   {  
      10.       SqlParameter[] prams = {  
      11. data.MakeInParam("@moduleid",  SqlDbType.NVarChar,
        50, modulemanage.ModuleID+"%"),  
      12.     };  
      13.       return (data.RunProcReturn("select * from 
        tb_Module where 版塊編號 like @moduleid", prams, tbName));  
      14.   }  
      15.   /// <summary> 
      16.   /// 根據(jù)--版塊名稱--得到版塊信息  
      17.   /// </summary> 
      18.   /// <param name="modulemanage"></param> 
      19.   /// <param name="tbName"></param> 
      20.   /// <returns></returns> 
      21.   public DataSet FindModuleByName(ModuleManage 
        modulemanage, string tbName)  
      22.   {  
      23.       SqlParameter[] prams = {  
      24. ata.MakeInParam("@modulename",  SqlDbType.NVarChar,
        100, modulemanage.ModuleName+"%"),  
      25.     };  
      26.       return (data.RunProcReturn("select * from 
        tb_Module where 版塊名稱 like @modulename", prams, tbName));  
      27.   }  
      28.   /// <summary> 
      29.   /// 得到所有--版塊信息  
      30.   /// </summary> 
      31.   /// <param name="tbName"></param> 
      32.   /// <returns></returns> 
      33.   public DataSet GetAllModule(string tbName)  
      34.   {  
      35.       return (data.RunProcReturn("select *
        from tb_Module ORDER BY 版塊編號", tbName));  
      36.   }  
      37.   #endregion 

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多