日韩性视频-久久久蜜桃-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ò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产综合精品 | 亚洲性生活网站 | 色欧美色 | 国产三级国产精品 | 波多野在线观看 | 日本手机看片 | 插我舔内射18免费视频 | 国产精品tv | 午夜男人影院 | 新呦u视频一区二区 | 污视频免费在线观看 | 丰满人妻翻云覆雨呻吟视频 | 99re中文字幕 | 91视频在线观看视频 | 噜噜噜精品欧美成人 | 精品视频在线看 | 亚洲 欧美 变态 另类 综合 | 国产aaa毛片 | 99色 | 久久人人人 | av午夜影院| 无套内谢少妇露脸 | 国产成人午夜精华液 | 妖精视频一区二区 | 成人高清免费 | 韩日视频在线 | 日韩在线黄色 | 超碰伦理| 福利免费在线观看 | 在线观看一级片 | 中文字幕少妇在线三级hd | 久久日精品 | 成人手机在线观看 | 少妇做爰免费视看片 | 欧美激情一级精品国产 | 久久精品偷拍视频 | 曰本女人与公拘交酡 | 久久午夜视频 | 91二区| 26uuu欧美日本 | 美女扒开内裤让男人捅 | 午夜不卡av免费 | 欧美乱大交xxxxx潮喷 | 伊人久久艹 | 国产黄色网络 | 日本乱大交xxxx公交车 | 亚洲三区视频 | 国产精品视频第一页 | 免费观看一区二区三区 | 亚洲情热 | 国内爆初菊对白视频 | 91福利社在线观看 | 日韩免 | 99久免费精品视频在线观78 | 国产黄色片在线播放 | 打开每日更新在线观看 | 91视频在线视频 | 亚洲国产www | 日本天堂在线视频 | 黄页网站免费在线观看 | 手机福利视频 | 国产无套视频 | 日韩在线看片 | 久久久久免费观看 | 日韩毛片网站 | 色哟哟一区二区三区 | 少妇免费看| 性工作者十日谈 | 日本熟伦人妇xxxx | a级国产毛片 | 日本一区二区成人 | 精品国产乱码久久久久 | 在线看免费毛片 | 成年丰满熟妇午夜免费视频 | 51 吃瓜网| 国产免费小视频 | 999午夜 | 草草地址线路①屁屁影院成人 | 麻豆亚洲av熟女国产一区二 | 亚洲av综合一区二区 | 美女av网| 天堂综合网 | 亚洲精品视频在线观看免费视频 | 国产绿帽刺激高潮对白 | 琪琪色综合网 | 国产成人精品片 | 活大器粗np高h一女多夫 | 毛片毛片女人毛片毛片 | 欧美激情精品久久久久 | 香蕉久久久久久久av网站 | 亚洲成人午夜影院 | 日韩欧美第一页 | 手机看片福利久久 | 女女同性被吸乳羞羞 | 国产女厕一区二区三区在线视 | 国产一区二区三区四区hd | 光明影院手机版在线观看免费 | 日韩激情一区二区三区 | 午夜av一区二区三区 |