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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

重构之SqlHelper

發(fā)布時(shí)間:2025/3/20 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 重构之SqlHelper 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

重構(gòu)之SqlHelper

?

? ? ? ? ? 在重構(gòu)中,D層中有很多的類,其中很多都需要跟數(shù)據(jù)庫打交道,就是所謂的增刪改查,這些命令的執(zhí)行就都是重復(fù)性的,僅僅是查詢內(nèi)容和數(shù)據(jù)表不同,就是所謂的查詢參數(shù)和查詢數(shù)據(jù)庫的語句不同。

? ? ? ? ??但是,執(zhí)行查詢的語句都是相同的,所以,就沒有必要在D層的每個(gè)類中都寫數(shù)據(jù)庫的執(zhí)行語句,而是把它們拿出來寫成一個(gè)一個(gè)的自定義函數(shù),并把這些函數(shù)封裝到一個(gè)類當(dāng)中,這個(gè)類就是SqlHelper,SqlHelper就是封裝了一些對數(shù)據(jù)庫操作的方法。

? ? ? ? ??在VB版本的機(jī)房中,也是把對數(shù)據(jù)庫的操作封裝成了一個(gè)函數(shù),把這個(gè)函數(shù)放在公共模塊中,供所有的窗體調(diào)用,代碼如下可以看出具體的操作分為了兩類,一個(gè)是增刪改操作,一個(gè)查詢操作。

?

?

<span style="font-size:24px;">Public Function Executesql(ByVal sql As String, msgstring As String) As ADODB.RecordsetDim cnn As ADODB.ConnectionDim rst As ADODB.RecordsetDim stokens() As Stringstokens = Split(sql)Set cnn = New ADODB.Connectioncnn.Open connectstringIf InStr("insert,delete,update", UCase$(stokens(0))) Thencnn.Execute sqlmsgstring = stokens(0) & "query successful"ElseSet rst = New ADODB.Recordsetrst.Open Trim$(sql), cnn, adOpenKeyset, adLockOptimisticSet Executesql = rstmsgstring = "查詢到" & rst.RecordCount & "條記錄"End If executesql_exit:Set rst = NothingSet cnn = NothingExit Function End Function </span>

?

?

?

? ? ? ? ??在VB.NET版的機(jī)房重構(gòu)中,具體的操作也是分為了兩類,一類是查詢,一類是增刪改操作,根據(jù)是否帶參數(shù),分為四個(gè)自定義函數(shù)。

? ? ? ? ??查詢就是要去查東西,肯定都必須要有返回值Boolean,或者有返回結(jié)果DataTable,而增刪改操作直接在數(shù)據(jù)中進(jìn)行執(zhí)行,不要求必須要有返回的結(jié)果,但是在對數(shù)據(jù)庫的執(zhí)行過程中,要設(shè)置異常處理,就是如果遇到錯(cuò)誤之后,它會(huì)馬上把該錯(cuò)誤的具體的信息拋出,表示對數(shù)據(jù)庫的操作失敗。

? ? ? ? ??1、帶參數(shù)的查詢,比如學(xué)生查看余額,查看充值記錄,查看學(xué)生信息,返回的結(jié)果是表DataTable。

? ? ? ? ??2、不帶參數(shù)的查詢,比如查詢操作員工作記錄,查詢的是整張表,不需要任何的參數(shù),返回的結(jié)果也是DataTable。

? ? ? ? ??3、帶參數(shù)的增刪改,比如刪除某個(gè)用戶參數(shù)為——選中要?jiǎng)h除的用戶,修改密碼和充值參數(shù)為——卡號,用戶充值等,不要求有返回結(jié)果。

? ? ? ? ? 4、不帶參數(shù)的增刪改,比如學(xué)生注冊,用戶退卡添加退卡信息,添加用戶充值記錄等,不要求有返回結(jié)果。

? ? ? ? ??下面是具體的代碼,僅供參考。

?

Public Class SqlHelper'利用配置文件尋找連接字符串,建立cmd文件'定義變量,獲得數(shù)據(jù)庫連接字符串 '定義cmd命令Private ReadOnly constr As String = System.Configuration.ConfigurationSettings.AppSettings("strConn")Dim conn As New SqlConnection(constr)Dim cmd As New SqlCommand'一共是四個(gè)自定義的函數(shù),但是只有兩個(gè)方法名'系統(tǒng)會(huì)自動(dòng)根據(jù)參數(shù)的不同,是否有參數(shù),決定調(diào)用哪一個(gè)方法'就是方法的名字相同,但是參數(shù)不同'cmdText——用來傳遞SQl語句'cmdType——決定Command如何解釋CommandText屬性的內(nèi)容默認(rèn)取值為Text,即SQL語句'sqlParameters——是CommandText屬性所指定的SQL語句或存儲(chǔ)過程的參數(shù)集合'查詢操作,帶參數(shù),返回結(jié)果是表Public Function GetDataTable(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal sqlparams As SqlParameter()) As DataTable'建立數(shù)據(jù)庫連接cmd = conn.CreateCommand()'將該函數(shù)的三個(gè)參數(shù),分別賦給相應(yīng)的對象'設(shè)置具體的sql語句'設(shè)置解釋CommandText的方式'設(shè)置具體的執(zhí)行參數(shù)cmd.CommandText = cmdTextcmd.CommandType = cmdTypecmd.Parameters.AddRange(sqlparams)'定義數(shù)據(jù)適配器變量,并實(shí)例化,將cmd綁定在adapter上面'定義數(shù)據(jù)緩存變量'定義變量返回?cái)?shù)據(jù)表Dim sqlAdapter As New SqlDataAdapter(cmd)Dim ds As New DataSetDim dt As New DataTableTry'打開連接'用adapter將dataset填充'返回查詢的結(jié)果,數(shù)據(jù)表conn.Open()sqlAdapter.Fill(ds)dt = ds.Tables(0)'捕獲,并且拋出該異常'Exception——系統(tǒng)拋出的異常'ex——通過ex,顯示該異常內(nèi)容Catch ex As ExceptionMsgBox(ex.Message, , "數(shù)據(jù)庫操作")FinallyCall CloseConn(conn)Call CloseCmd(cmd)End TryReturn dtEnd Function'查詢操作,不帶參數(shù),返回結(jié)果是表Public Function GetDataTable(ByVal cmdText As String, ByVal cmdType As CommandType) As DataTablecmd = conn.CreateCommand()cmd.CommandText = cmdTextcmd.CommandType = cmdType'定義數(shù)據(jù)適配器變量,并實(shí)例化,將cmd綁定在adapter上面'定義數(shù)據(jù)緩存變量Dim sqlAdapter As New SqlDataAdapter(cmd)Dim ds As New DataSetDim dt As New DataTableTryconn.Open()sqlAdapter.Fill(ds)dt = ds.Tables(0)Catch ex As ExceptionMsgBox(ex.Message, , "數(shù)據(jù)庫操作")FinallyCall CloseConn(conn)Call CloseCmd(cmd)End TryReturn dtEnd Function'增刪改操作,帶參數(shù),沒有返回結(jié)果Public Function NoReturn(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal sqlparams As SqlParameter())cmd = conn.CreateCommandcmd.CommandText = cmdTextcmd.CommandType = cmdTypecmd.Parameters.AddRange(sqlparams)Tryconn.Open()cmd.ExecuteNonQuery()Catch ex As ExceptionMsgBox(ex.Message, , "數(shù)據(jù)庫操作")FinallyCall CloseConn(conn)Call CloseCmd(cmd)End TryReturn TrueEnd Function'增刪改操作,不帶參數(shù),沒有返回結(jié)果Public Function NoReturn(ByVal cmdText As String, ByVal cmdType As CommandType)cmd = conn.CreateCommandcmd.CommandText = cmdTextcmd.CommandType = cmdTypeTryconn.Open()cmd.ExecuteNonQuery()Catch ex As ExceptionMsgBox(ex.Message, , "數(shù)據(jù)庫操作")FinallyCall CloseConn(conn)End TryReturn TrueEnd Function''' <summary> ''' 關(guān)閉連接 ''' </summary> '''<param name="conn ">需要關(guān)閉的連接</param> '''<remarks>2015-3-29 17:22:31</remarks> Public Sub CloseConn(ByVal conn As SqlConnection)If (conn.State <> ConnectionState.Closed) Then '如果沒有關(guān)閉 conn.Close() '關(guān)閉連接 conn = Nothing '不指向原對象 End IfEnd Sub''' <summary> ''' 關(guān)閉命令 ''' </summary> '''<param name="cmd ">需要關(guān)閉的命令 </param> '''<remarks>2015-3-29 17:22:31</remarks> Public Sub CloseCmd(ByVal cmd As SqlCommand)If Not IsNothing(cmd) Then '如果cmd命令存在 cmd.Dispose() '銷毀 cmd = NothingEnd IfEnd Sub End Class

?

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的重构之SqlHelper的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲不卡影院 | 91美女啪啪 | 91美女免费看 | 视频福利在线 | 冈本视频在线观看 | 中文字幕中文字幕 | 国产午夜伦鲁鲁 | 五月婷婷影院 | 超碰人人擦 | 国产精品久久久久久久久久免费看 | 国产精品一区二区三区四区在线观看 | 亚洲影院中文字幕 | 午夜福利123| 都市豪门艳霸淫美妇 | 亚洲精品乱码久久久久久蜜桃麻豆 | 性xxxx欧美 | 999精品在线视频 | 成人免费网站视频 | sese在线视频 | 色乱码一区二区三区 | 91亚洲精| 捆绑japanhdxxxxvideos | 黑丝美女av | av免费久久| 色偷偷网站 | 成人免费播放视频 | 污污视频在线观看免费 | 一区二区不卡视频在线观看 | 日本女优中文字幕 | 免费视频色 | 欧美大片视频在线观看 | 国产精品88久久久久久妇女 | 国产乱子一区二区 | 成人hd | 99精品中文字幕 | 日韩久久影院 | 一级黄色性片 | 日韩美一级片 | 国产xxxx | 欧美日韩一区二区三区在线观看 | 男女视频在线免费观看 | 久久久久国产一区二区 | 野花中文免费观看6 | 岛国av免费在线 | 日本www高清视频 | 九色首页 | 天天色图片 | 女同性恋一区二区三区 | 中文字幕在线观看一区二区 | 久久综合91 | 都市激情亚洲一区 | 亚洲有吗在线 | 奇米四色7777 | 老司机一区二区三区 | 亚洲视频手机在线 | 久久久久性 | 亚洲免费一区视频 | a级大片在线观看 | 极品美女高潮 | 国产又爽又黄免费视频 | 欧美一区二区三区婷婷 | 免费拍拍拍网站 | 天天躁日日躁狠狠躁 | 国产视频一区在线 | 日本人六九视频 | 一区二区三区www | 久久午夜片 | 国产亚洲精品成人 | 激情黄色小说视频 | 精品美女一区 | 十八禁一区二区三区 | 色干干 | 久久午夜片 | 国产国语videosex另类 | japan高清日本乱xxxxx | 国产在线视频一区二区三区 | 日本狠狠爱 | 一区二区三区观看 | 免费激情小视频 | 狠狠操亚洲 | 熟妇一区二区三区 | 日本成人综合 | 女的高潮流时喷水图片大全 | 日韩一区二区三区在线观看 | 国产1区2区在线观看 | 看黄色a级片 | 你懂的国产 | 日本久久精品 | 黄色不卡| 久久久久久高清 | 久久视频这里只有精品 | 欧美人体视频 | 男同精品 | 亚洲欧美视频一区 | 亚洲精品免费在线观看视频 | 免费日韩视频 | 亚洲第一av网| 亚洲成人tv | 国产精品99久久久 |