牛腩——SQLhelper
前言
機(jī)房重構(gòu)的時(shí)候用到了sqlhelper,現(xiàn)在學(xué)習(xí)牛腩又重新接觸到了sqlhelper。機(jī)房的時(shí)候知道slqherlper要寫(xiě)4個(gè)方法,一個(gè)查詢(xún)的,一個(gè)增刪改的,這兩個(gè)都分帶參數(shù)和不帶參數(shù)兩種情況。但是沒(méi)有想過(guò)為什么每個(gè)方法要傳一個(gè)string類(lèi)型的語(yǔ)句,一個(gè)類(lèi)型,和參數(shù)。這次牛腩老師展示了sqlhelper從初級(jí)到一步步重構(gòu)成完美助手類(lèi)的過(guò)程。
Step 1: SQL and Connection
其實(shí)sqlhelper就是把D層每個(gè)方法都要連接數(shù)據(jù)庫(kù),到數(shù)據(jù)庫(kù)里執(zhí)行增刪查改的基礎(chǔ)操作給抽象出一個(gè)類(lèi)。符合面向?qū)ο蟮乃枷搿?
能使sql運(yùn)行起來(lái)最基礎(chǔ),最簡(jiǎn)陋 ,最本質(zhì)的東西就是建好connection連接并打開(kāi),寫(xiě)好sql語(yǔ)句,并把這兩個(gè)東西當(dāng)做參數(shù)傳給一個(gè)叫SqlCommand的鬼東西。
Step 2: 改造Connection
把Connection寫(xiě)到構(gòu)造函數(shù)里
sqlhelper里的四個(gè)方法都要?jiǎng)?chuàng)建connetion連接并打開(kāi)。在vb.net中可以把這些公共用到的東西寫(xiě)到類(lèi)的最開(kāi)始,在C#里讓類(lèi)初始化的時(shí)候就執(zhí)行的東西需要寫(xiě)到構(gòu)造函數(shù)里。
把打開(kāi)connection寫(xiě)成一個(gè)方法,就像單例一樣,保證在connection沒(méi)有打開(kāi)的情況下打開(kāi)connection。
加入配置文件
進(jìn)一步解耦,把connectionstring 寫(xiě)到web的config里面。
改過(guò)后的SQLhelper
public class SQLHelper{#region 構(gòu)造函數(shù)初始化命令字符串,并應(yīng)用配置文件//構(gòu)造函數(shù)初始化命令字符串,并應(yīng)用配置文件private SqlConnection conn = null;private SqlCommand cmd = null;private SqlDataReader sdr = null;public SQLHelper(){string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;SqlConnection conn = new SqlConnection(connStr);}Step3: 改造sql
之前傳入這四個(gè)方法的就是一個(gè)sql語(yǔ)句。sql用拼接字符串容易造成sql注入,所以sql里要加入?yún)?shù)SQLParameter。此外,D層傳入不僅知識(shí)sql語(yǔ)句也可以是存儲(chǔ)過(guò)程,所以這四個(gè)方法還要加入一個(gè)參數(shù)就是commandtype。
補(bǔ)充-關(guān)閉連接
除了上面的try catch 方法,在查詢(xún)方法中可以用using來(lái)關(guān)閉connection 。
小結(jié)
看了牛腩,像是觀(guān)看了丑小鴨變天鵝的一個(gè)過(guò)程。一開(kāi)始的代碼肯定是以實(shí)現(xiàn)主要功能為主,小鴨雖丑,五臟俱全;然后就是一步步的整容了,就變成白天鵝了。(總結(jié)出一條真理:重構(gòu)就是整容。)
總結(jié)
以上是生活随笔為你收集整理的牛腩——SQLhelper的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java dsa加密与解密_Java D
- 下一篇: 2020电子设计大赛E题复盘