日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

牛腩新闻发布系统(一):SQLHelper重构(一)

發(fā)布時(shí)間:2023/12/13 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 牛腩新闻发布系统(一):SQLHelper重构(一) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

導(dǎo)讀:在機(jī)房重構(gòu)的時(shí)候,就用到了SQLHelper,但那時(shí)候即使把代碼反復(fù)看了很多遍,也看了注釋,還和同學(xué)交流,也依然是半懂不懂?,F(xiàn)在,我再次用到了SQLhelper這個(gè)東西,就來說說SQLHelper是怎么構(gòu)建的。

?

一、Why?(為什么用)

1,首先看普遍性的D層操作

<span style="font-size:18px;"><span style="font-size:24px;">/*********************************************** '類名:Class1* '命名空間:SQLHelper* '創(chuàng)建時(shí)間:2015/3/5 13:20:02* '創(chuàng)建人:HXX* '修改時(shí)間:* '修改人:* '版本號(hào):4.0.30319.18449* '版權(quán):HHX* '**********************************************/ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; //增添了對(duì)數(shù)據(jù)庫(kù)的訪問操作,增添相應(yīng)的命名空間 //提供對(duì)表示 ADO.NET 結(jié)構(gòu)的類的訪問。包含的是一些數(shù)據(jù)庫(kù)操作所需要用到的普通數(shù)據(jù),如數(shù)據(jù)表,數(shù)據(jù)行等 using System.Data; //為 SQL服務(wù)器.NET Framework 數(shù)據(jù)提供程序。包含有關(guān)專門操作SqlServer數(shù)據(jù)庫(kù)的類,如SqlConnection,SqlCommand,SqlDateAdapter等. using System.Data.SqlClient; namespace SQLHelper { public class SQLHelper { public int ExecuteNonQuery() { //數(shù)據(jù)庫(kù)鏈接字符串 string connStr = @"server=(local);database=newssystem;uid=sa;pwd=123456"; //實(shí)例化SQLConnection,并通過字符串鏈接數(shù)據(jù)庫(kù) SqlConnection conn = new SqlConnection(connStr); //打開鏈接 conn.Open(); //執(zhí)行的SQL語(yǔ)句 string sql = "insert into category(name)values('hhx')"; //實(shí)例化命令(執(zhí)行SQL,在conn鏈接的數(shù)據(jù)庫(kù)里) SqlCommand cmd = new SqlCommand(sql, conn); //定義變量 int res = cmd.ExecuteNonQuery(); //關(guān)閉鏈接 conn.Close(); //返回執(zhí)行更新行數(shù) return res; } } } </span></span>

2,解釋說明

基本上,每次在D層對(duì)于數(shù)據(jù)庫(kù)操作,都要經(jīng)歷這么一個(gè)階段:鏈接—打開—執(zhí)行—關(guān)閉—返回。如果只有一個(gè)方法,一個(gè)類,那么寫一次是不要緊的,但如果有很多的話,就非常的累。這時(shí)候,就需要對(duì)于每次的數(shù)據(jù)庫(kù)操作進(jìn)行抽象重構(gòu),以便于我們的D層更為輕便。

?

二、重構(gòu)步驟

1,數(shù)據(jù)庫(kù)的鏈接

首先:每次的操作,都要進(jìn)行數(shù)據(jù)庫(kù)鏈接,這個(gè)公共的特性,可以單寫出一個(gè)方法專門進(jìn)行數(shù)據(jù)庫(kù)鏈接。

<span style="font-size:18px;"><span style="font-size:24px;"> /// <summary>/// 通過構(gòu)造函數(shù),給SQLHelper的屬性附初值/// </summary>public SQLHelper(){<span style="white-space:pre"> </span>string connStr = @"server=(local);database=newssystem;uid=sa;pwd=123456";<span style="white-space:pre"> </span>SqlConnection conn = new SqlConnection(connStr);}</span></span>


其次:在這里,就已經(jīng)對(duì)于數(shù)據(jù)庫(kù)鏈接進(jìn)行了初步的精簡(jiǎn)。但通過定義變量的方式,又將數(shù)據(jù)的鏈接寫死在了程序里。所以,為了進(jìn)一步解耦,需要引入配置文件,便于數(shù)據(jù)庫(kù)的更改。

注意:1,引用命名空間using?System.Configuration,2,配置文件在Web層里自行配置。

<span style="font-size:18px;"><span style="font-size:24px;"><span style="white-space:pre"> </span>public SQLHelper(){string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;conn = new SqlConnection(connStr);}</span></span>

2,打開關(guān)閉數(shù)據(jù)庫(kù)

在對(duì)數(shù)據(jù)庫(kù)進(jìn)行鏈接之后,還需要打開它,在對(duì)其操作結(jié)束后,還要關(guān)閉。這是在每一次操作時(shí),都需要用到的,所以,這個(gè)地方可以精簡(jiǎn)。

<span style="font-size:18px;"><span style="font-size:24px;"><span style="white-space:pre"> </span>private SqlConnection GetConn(){//如果數(shù)據(jù)庫(kù)關(guān)閉,則打開if (conn.State == ConnectionState.Closed){conn.Open();}return conn;}</span></span>


三、精簡(jiǎn)結(jié)果

每次執(zhí)行的SQL語(yǔ)句,可以通過一個(gè)變量從D層傳入,所以在方法中,引入一個(gè)形參sql。

<span style="font-size:18px;"><span style="font-size:24px;"> /// 該方法執(zhí)行傳入的SQL增刪改語(yǔ)句(無參)/// </summary>/// <param name="sql">要執(zhí)行的SQL增刪改語(yǔ)句或存儲(chǔ)過程</param>/// <returns>返回更新的記錄數(shù)</returns>public int ExecuteNonQuery(string sql){int res;try{SqlCommand cmd = new SqlCommand(sql, GetConn());res = cmd.ExecuteNonQuery();}catch (Exception ex){throw ex;}finally{if (conn.State == ConnectionState.Open){conn.Close();}}return res;} </span></span>


到目前為止,對(duì)于SQLHelper的基本精簡(jiǎn)編寫,就結(jié)束了。

?

四、擴(kuò)展

在上面,我們使用了Try?Catch語(yǔ)句,但我們發(fā)現(xiàn)在最后關(guān)閉數(shù)據(jù)庫(kù)的時(shí)候,又重復(fù)了寫了一遍if語(yǔ)句,那么,這一段有沒有方法精簡(jiǎn)呢,答案是:使用Using語(yǔ)句。

PS:在這篇博客中,只是簡(jiǎn)單的對(duì)于SQLHelper進(jìn)行了外形上的處理,還有內(nèi)容上的處理:比如:參數(shù)化查詢,執(zhí)行存儲(chǔ)過程等。敬請(qǐng)期待下一篇吧!

?

五、個(gè)人感受

之前一直在用,但一直都不知道它是怎么來的,自己也寫不出來。但真的是:萬(wàn)丈高樓平地起。帶來了很大便利的SQLHelper,也是一步一步的精簡(jiǎn)而來。


?

?

?


轉(zhuǎn)載于:https://www.cnblogs.com/hhx626/p/6010445.html

總結(jié)

以上是生活随笔為你收集整理的牛腩新闻发布系统(一):SQLHelper重构(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。