前兩天上課的內容總結了下,一般在連線層基本就呼叫那幾個類。
一般包括system.data.sqlclient和system.data下的sqlconnection,sqlcommand,sqldatareader這三個類。如果,要想從配置檔案中讀取的話,還需要system.configuration。
到底怎麼連線我想書上都有,就不寫了。寫單私貨,和老師在上課時講的不一樣的。
方法大家一開始是這麼寫的
staticstring connstr = @"
data source=.\test;initial catalog=test;integrated security=true";
public
static sqldatareader getreader(string sql,params
sqlparameter pars)
}}
先獲取連線字串(這裡用變數意思一下),然後傳sqlparameters陣列和sql語句。大多數人也都這麼寫。但定義引數陣列太麻煩了,有好多字,也挺麻煩的。
後來想了想,有沒有更好的辦法呢。要是能讓他自己摘開sql變數多好。於是就寫了下面方法
//拆解sql得到變數陣列,返回list型別的sql變數陣列
private
static list getparamaters(string
sql)
list
list = meat.split('
☆').where(s => s.contains("@"
)).tolist();
list =removerepeatpars(list);
return
list;
}
原理其實就是,sql變數前後字元畢竟也就那麼幾個麼「 ,=()<>」,然後用乙個稀有的字元替換下(比如上面那個小星星),以免破壞變數名。再用string.split
把他們按照沒用的字元截斷扔進乙個集合裡,這樣我們把變數前後都打斷,再拿出包含'@'字元的字串,這些就都是乾淨的變數名了。是吧。
不過之前還有一步,就是把重複的變數去掉!(有些時候用update的時候set乙個變數where乙個變數有可能會重複)
privatestatic list removerepeatpars(listlist)
}return
list;
}
前後索引都不一樣的,八成就是重複的。排除之後就剩下純淨的sql引數了!
然後就這麼改下原來的方法
privatestatic list getparamaters(string
sql)
list
list = meat.split('
☆').where(s => s.contains("@"
)).tolist();
list =removerepeatpars(list);
return
list;
}
把這兩個方法合併,sql的加工就寫好了。下面再改下之前的方法
publicstatic sqldatareader getreader(string sql, params
object
pars)
using (sqlconnection conn = new
sqlconnection(connstr))
return
comm.executereader();}}
}
然後就用加params的object的陣列代替原來的sqlparameters引數了,這樣就方便多了,再也不用定義sqlparameters了
如果下次再要寫引數就直接這樣寫
getreader(sql,1,"name",0.14,1m)就好了。就像console.writeline()一樣方便(自我感覺)。
Android學習 寫個小例項
學了不少基礎的知識,拼乙個完整點的小例子吧!目標 完成乙個與pc 機互發訊息的聊天程式。我們就想試一試用socket 來實現雙機對聯。先試通socket 通訊,pc 機當伺服器,手機當客戶端。通常,我們寫pc 的socket 程式時,了解到,伺服器端是採用socket 監聽程式來監聽網路的某個埠,當...
寫個總的索引
會慢慢給會給這些題目排序,從易到難,按照順序做下去應該會更容易學懂pwn 同時解釋下為什麼基本每道題都要貼網上鏈結,有三個原因 1是有些題目我的確不會,是從他們那裡學來的,貼鏈結是應該的 2是有些題目我會,但是自己從頭寫指令碼太累了 然後從網上找的指令碼 3是我可能寫的不是很好,給你乙個原始的鏈結,...
C 學習筆記(8)寫個氣泡排序
1 氣泡排序的原理 氣泡排序的原理是反覆比較待排序陣列中所有相鄰的兩個資料,使他們按照公升序 或降序 排列。當待排序陣列中所有相鄰資料都比較過一次之後,待排序陣列中最小 或最大 的資料會被逐步交換到第一位,就像氣泡從水底慢慢公升到水面一樣,故名 氣泡排序演算法 2 演算法練習 氣泡排序口訣 n 個數...