一.//連接方式訪問(wèn)數(shù)據(jù)庫(kù)的主要步驟(利用DataReader對(duì)象實(shí)現(xiàn)數(shù)據(jù)庫(kù)連接模式)
1.創(chuàng)建連接對(duì)象(連接字符串)
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["XXX"].ConnectionString);
2.創(chuàng)建命令對(duì)象(設(shè)置Command對(duì)象的幾個(gè)屬性值)
SqlCommand scmd = new SqlCommand();
scmd.CommandText = sql;
scmd.CommandType = CommandType.StoredPRocedure;
scmd.Connection = scon;
3.打開(kāi)連接
con.Open();
4.發(fā)送命令
scmd.ExecuteNonQuery(); //增刪改的時(shí)候
//scmd.ExecuteReader(); //查詢的時(shí)候
//scmd.ExecuteScalar(); //返回第一行第一列的時(shí)候,使用
5.處理數(shù)據(jù)
//視情況而定。。。可有可無(wú)
6.關(guān)閉連接
scon.Close();
//非鏈接方式訪問(wèn)數(shù)據(jù)庫(kù)(利用DataAdapter對(duì)象實(shí)現(xiàn)數(shù)據(jù)庫(kù)斷開(kāi)模式)
1/創(chuàng)建連接對(duì)象
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["XXX"].ConnectionString);
2.創(chuàng)建數(shù)據(jù)適配器對(duì)象(數(shù)據(jù)適配器對(duì)象有四個(gè)選擇命令:SelectCommand,UpdateCommand,DeleteCommand,InsertCommand,另外還有一個(gè)Fill()填充方法。里面可以填充DataTable或者DataSet對(duì)象)
SqlDataAdapter sda = new SqlDataAdapter("GetUserInfoByName", scon);
sda.SelectCommand.CommandType = CommandType.StoredProcedure;
3.打開(kāi)連接
scon.Open();
//DataTable dt=new DataTable();
4.發(fā)送命令
sda.Fill(dt);
5.關(guān)閉連接
scon.Close();
1、連接環(huán)境
優(yōu)點(diǎn):
環(huán)境易于實(shí)施安全控制
同步問(wèn)題易于控制
數(shù)據(jù)實(shí)時(shí)性優(yōu)于其他環(huán)境
缺點(diǎn)
必須保持持續(xù)的網(wǎng)絡(luò)連接
擴(kuò)展性差
2、非連接環(huán)境
中央數(shù)據(jù)存儲(chǔ)的一部分?jǐn)?shù)據(jù)可以被獨(dú)立地復(fù)制與更改,在需要時(shí)可以與數(shù)據(jù)源中的數(shù)據(jù)合并
優(yōu)點(diǎn)
可以在任何需要的時(shí)間進(jìn)行操作,在必要時(shí)才連接到數(shù)據(jù)源
不獨(dú)占連接
非連接環(huán)境的應(yīng)用提高了應(yīng)用的擴(kuò)展性與性能
缺點(diǎn)
數(shù)據(jù)不是實(shí)時(shí)的
必須解決數(shù)據(jù)的并發(fā)性與同步問(wèn)題
對(duì)于C/S結(jié)構(gòu),連接模式還是一個(gè)不錯(cuò)的模式,在B/S結(jié)構(gòu),或者分布式的環(huán)境中,還是使用斷開(kāi)模式比較好。一方面是擴(kuò)展性比較好,另外一個(gè)方面是效率會(huì)比較高,相對(duì)于采用連接模式來(lái)說(shuō)。這取決于Connection是否還是需要象在傳統(tǒng)的C/S結(jié)構(gòu)中使用單件模式創(chuàng)建一個(gè)共享的Connection,還是象在每一個(gè)頁(yè)面都創(chuàng)建自己的Connection.
SqlDataReader從字面上看數(shù)據(jù)讀取,在讀取數(shù)據(jù)的過(guò)程中一直與數(shù)據(jù)庫(kù)保持連接,適合數(shù)據(jù)量小的情況,執(zhí)行效率還是可以的。
SqlDataAdapter(數(shù)據(jù)適配器)可以說(shuō)建立一個(gè)"本地?cái)?shù)據(jù)庫(kù)"--DataSet,先將數(shù)據(jù)取出來(lái)放到dataset中,然后就可以關(guān)閉數(shù)據(jù)庫(kù)了,通過(guò)sqldataadapter還可以更新刪除數(shù)據(jù)庫(kù)中的東西,可以通過(guò)封裝的Update等方法同步到數(shù)據(jù)庫(kù),這樣服務(wù)器的資源消耗就少,可以同時(shí)支持更多并發(fā)的客戶機(jī)。當(dāng)然,這需要DataSet對(duì)象的支持和配合才能完成,這是ADO.NET的卓越之處。
兩種模式都可以搭配DataSet和DataTable使用。
1、連接
數(shù)據(jù)量小,系統(tǒng)規(guī)模不大、客戶機(jī)和服務(wù)器在同一網(wǎng)絡(luò)內(nèi)的環(huán)境,只讀的情況下優(yōu)先選DataReader
2、非連接
適合網(wǎng)絡(luò)數(shù)據(jù)量大、系統(tǒng)節(jié)點(diǎn)多、網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜,尤其是通過(guò)Internet/Intranet進(jìn)行連接的網(wǎng)絡(luò)。需要綁定數(shù)據(jù)遠(yuǎn)的情況下,需要修改數(shù)據(jù)同時(shí)更新到數(shù)據(jù)庫(kù)(非連接)
注:沒(méi)有那種模式是絕對(duì)的,根據(jù)自己的需要情況,各取所需,這樣節(jié)省資源,提高效率,達(dá)到事半功倍的效果。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注