欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
執行命令方法的封裝

數據庫操作類(lèi)的封裝詳解

如果你經(jīng)常從事基于.NET的應用程序的數據庫開(kāi)發(fā),你會(huì )有這種感覺(jué)--總是覺(jué)得自己在反復編寫(xiě)相同的數據訪(fǎng)問(wèn)代碼。很多相似的代碼每天在復制來(lái),粘貼去。你是否想過(guò)將數據訪(fǎng)問(wèn)代碼包裝在一個(gè)Helper函數里,以便能夠在不同的類(lèi)中共用?如果你還沒(méi)有這樣做,那么我這里就告訴你如何從復用的角度來(lái)設計和包裝一個(gè)我們自己的數據訪(fǎng)問(wèn)類(lèi),從而減少冗余代碼,提高開(kāi)發(fā)效率。(本節代碼位置:光盤(pán)\code\ch05\02)

5.2.1  執行命令方法的封裝

當我們執行增加、更新、刪除命令的時(shí)候,一般會(huì )這樣來(lái)寫(xiě):

  1. string conString = "data source=127.0.0.1;database=codematic;user 
    id=sa;  
  2. password=";  
  3. SqlConnection myConnection = new SqlConnection(conString );  
  4. string strSql = "update P_Product set Name='電腦3' where Id=52";  
  5. SqlCommand myCommand = new SqlCommand(strSql, myConnection);  
  6. myConnection.Open();  
  7. int rows = myCommand.ExecuteNonQuery();  
  8. myConnection.Close(); 

如果是很多個(gè)這樣的操作,那么我們就需要寫(xiě)很多基本相似的代碼。根據面對對象的抽象原則,在這些操作里面有很多共性的東西,唯一的不同就是conString和strSql。那我是不是可以將共性的東西抽象出來(lái)將其封裝為所有操作所共用呢?

我們把共性的東西抽象出一個(gè)獨立方法:

  1. //<summary>  
  2. //執行SQL語(yǔ)句,返回影響的記錄數  
  3. //</summary>  
  4. public int ExecuteSql(string StrSql, string conString)  
  5. {  
  6.     using (SqlConnection connection = new SqlConnection(conString))  
  7.     {  
  8.         using (SqlCommand cmd = new SqlCommand(StrSql, connection))  
  9.         {              
  10.              connection.Open();  
  11.              int rows = cmd.ExecuteNonQuery();  
  12.              return rows;              
  13.         }  
  14.     }  

這樣,實(shí)際調用的代碼就可以變成:

  1. string conString="data source=127.0.0.1;database=codematic;user 
    id=sa;  
  2. password=";  
  3. string strSql = "update P_Product set Name='電腦3' where Id=52";  
  4. int rows =ExecuteSql(strSql, conString); 

是不是簡(jiǎn)單了很多?可以讓其他類(lèi)共用這個(gè)方法,重復代碼少了,工作效率提高了。

如果所連數據庫都是固定不變的,也就是說(shuō)連接字符串一般不變,那么我們可以將conString 提取出來(lái)放到一個(gè)變量里面,所有的方法都用這個(gè)變量。想改變數據庫時(shí),直接修改變量的內容即可,在實(shí)際調用的時(shí)候不需要傳連接字符串,是不是又省了一步?為了更好地復用,我們還可以將該方法放到單獨的類(lèi)DbHelperSQL里面去。

DbHelperSQL類(lèi)中:

  1. public class DbHelperSQL  
  2. {     
  3.     public static string conString = "data source=127.0.0.1;  
  4.         database=codematic;user id=sa;password=";  
  5.     //<summary>  
  6.     //執行SQL語(yǔ)句,返回影響的記錄數  
  7.     //</summary>  
  8.     //<param name="StrSql">SQL語(yǔ)句</param>  
  9.     //<returns>影響的記錄數</returns>  
  10.     public static int ExecuteSql(string StrSql)  
  11.     {  
  12.         using (SqlConnection connection = new SqlConnection(conString))  
  13.         {  
  14.             using (SqlCommand cmd = new SqlCommand(StrSql, connection))  
  15.             {  
  16.                 connection.Open();  
  17.                 int rows = cmd.ExecuteNonQuery();  
  18.                 return rows;  
  19.             }  
  20.         }  
  21.     }  
為了使用方便和節省資源,我們將變量和方法設計成靜態(tài)的。此時(shí)的調用就變成了:
  1. string strSql = "update P_Product set Name='電腦3' where Id=52";  
  2. int rows = DbHelperSQL.ExecuteSql(strSql); 

為了以后的維護和擴展,數據庫連接字符串最好放在Web.config里面,這樣以后想改數據庫就直接改一下Web.config即可,而無(wú)須重新編譯代碼。

  1. Web.config加入:  
  2. <appSettings>  
  3.     <add key="ConnectionString" value="server=127.0.0.1;
    database=codematic;  
  4.             uid=sa;pwd="/>   
  5. </appSettings>  
  6. 變量獲取該字符串:  
  7. public static string conString = ConfigurationManager.AppSettings  
  8.     ["ConnectionString "];   

有時(shí)候為了安全,我們可能會(huì )對Web.config中的連接字符串進(jìn)行加密。這樣就需要在獲取連接字符串的時(shí)候進(jìn)行解密。這樣,單憑上面一句代碼可能就無(wú)法解決了,我們還需要單獨的處理方法來(lái)處理。為了更好地降低耦合性,減少對類(lèi)的依賴(lài),我們可以將獲取數據庫連接字符串的操作單獨放到一個(gè)類(lèi)里面,如PubConstant。這樣以后修改相應的連接規則和加密處理時(shí),直接調用各個(gè)模塊的這個(gè)類(lèi)就可以了,而并不需要知道實(shí)際的各個(gè)模塊的數據庫訪(fǎng)問(wèn)類(lèi)是怎么獲取的。

例如Web.config的<appSettings>設置:

  1. <add key="ConStringEncrypt" value="false"/>  
  2. <add key="ConnectionString" value="server=127.0.0.1;database=codematic;  
  3. uid=sa;pwd="/>  
  4. 公共常量類(lèi)獲取并處理:  
  5. public class PubConstant  
  6. {          
  7.     //<summary>  
  8.     //獲取連接字符串,判斷是否加密處理  
  9.     //</summary>  
  10.     public static string ConString  
  11.     {             
  12.         get   
  13.         {  
  14.             string _conString = ConfigurationManager.AppSettings
    [
    "ConString"];  
  15.             string ConStringEncrypt = ConfigurationManager.AppSettings  
  16.             ["ConStringEncrypt"];  
  17.             if (ConStringEncrypt == "true")//是加密的  
  18.             {  
  19.                 _conString = DESEncrypt.Decrypt(_conString);//解密  
  20.             }  
  21.             return _conString;   
  22.         }  
  23. }  
  24. }  
  25. 使用連接字符串:  
  26. public static string conString = PubConstant.ConString; 

最后的各個(gè)類(lèi)的調用關(guān)系如圖5-7所示。

 
圖5-7  執行命令方法的封裝類(lèi)圖
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
asp.net連接數據庫字符串
SqlConnection類(lèi)
各種事務(wù)處理方式大比拼
簡(jiǎn)單的SQL Server數據庫數據讀取與數據操作
C# 通過(guò)DataGridView更新數據庫
操作數據庫類(lèi)SQLHelp.cs
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久