1.維護(hù)數(shù)據(jù)庫的完整性、一致性、你喜歡用觸發(fā)器還是自寫業(yè)務(wù)邏輯?為什么?
答:盡可能用約束(包括CHECK、主鍵、唯一鍵、外鍵、非空字段)實(shí)現(xiàn),這種方式的效率最好;其次用觸發(fā)器,這種方式可以保證無論何種業(yè)務(wù)系統(tǒng)訪問數(shù)據(jù)庫都能維持?jǐn)?shù)據(jù)庫的完整性、一致性;最后再考慮用自寫業(yè)務(wù)邏輯實(shí)現(xiàn),但這種方式效率最低、編程最復(fù)雜,當(dāng)為下下之策。
2.什么是事務(wù)?什么是鎖?
答:事務(wù)是指一個(gè)工作單元,它包含了一組數(shù)據(jù)操作命令,并且所有的命令作為一個(gè)整體一起向系統(tǒng)提交或撤消請(qǐng)求操作,即這組命令要么都執(zhí)行,要么都不執(zhí)行。
鎖是在多用戶環(huán)境中對(duì)數(shù)據(jù)的訪問的限制。SqlServer自動(dòng)鎖定特定記錄、字段或文件,防止用戶訪問,以維護(hù)數(shù)據(jù)安全或防止并發(fā)數(shù)據(jù)操作問題,鎖可以保證事務(wù)的完整性和并發(fā)性。
3.什么是索引,有什么優(yōu)點(diǎn)?
答:索引象書的目錄類似,索引使數(shù)據(jù)庫程序無需掃描整個(gè)表,就可以在其中找到所需要的數(shù)據(jù),索引包含了一個(gè)表中包含值的列表,其中包含了各個(gè)值的行所存儲(chǔ)的位置,索引可以是單個(gè)或一組列,索引提供的表中數(shù)據(jù)的邏輯位置,合理劃分索引能夠大大提高數(shù)據(jù)庫性能。
4.視圖是什么?游標(biāo)是什么?
答:視圖是一種虛擬表,虛擬表具有和物理表相同的功能,可以對(duì)虛擬表進(jìn)行增該查操作;
視圖通常是一個(gè)或多個(gè)表的行或列的子集;
視圖的結(jié)果更容易理解(修改視圖對(duì)基表不影響),獲取數(shù)據(jù)更容易(相比多表查詢更方便),限制數(shù)據(jù)檢索(比如需要隱藏某些行或列),維護(hù)更方便。
游標(biāo)對(duì)查詢出來的結(jié)果集作為一個(gè)單元來有效的處理,游標(biāo)可以定位在結(jié)果集的特定行、從結(jié)果集的當(dāng)前位置檢索一行或多行、可以對(duì)結(jié)果集中當(dāng)前位置進(jìn)行修改、
5.什么是存儲(chǔ)過程?有什么優(yōu)點(diǎn)?
答:存儲(chǔ)過程是一組予編譯的SQL語句
它的優(yōu)點(diǎn):1.允許模塊化程序設(shè)計(jì),就是說只需要?jiǎng)?chuàng)建一次過程,以后在程序中就可以調(diào)用該過程任意次。
2.允許更快執(zhí)行,如果某操作需要執(zhí)行大量SQL語句或重復(fù)執(zhí)行,存儲(chǔ)過程比SQL語句執(zhí)行的要快。
3.減少網(wǎng)絡(luò)流量,例如一個(gè)需要數(shù)百行的SQL代碼的操作有一條執(zhí)行語句完成,不需要在網(wǎng)絡(luò)中發(fā)送數(shù)百行代碼。
4.更好的安全機(jī)制,對(duì)于沒有權(quán)限執(zhí)行存儲(chǔ)過程的用戶,也可授權(quán)他們執(zhí)行存儲(chǔ)過程。
6.什么是觸發(fā)器?
答:觸發(fā)器是一種特殊類型的存儲(chǔ)過程,出發(fā)器主要通過事件觸發(fā)而被執(zhí)行的,
觸發(fā)器的優(yōu)點(diǎn):1.強(qiáng)化約束,觸發(fā)器能夠提供比CHECK約束;
2.跟蹤變化,觸發(fā)器可以跟蹤數(shù)據(jù)庫內(nèi)的操作,從而不允許未經(jīng)允許許可的更新和變化;
3.聯(lián)級(jí)運(yùn)算,比如某個(gè)表上的觸發(fā)器中包含對(duì)另一個(gè)表的數(shù)據(jù)操作,而該操作又導(dǎo)致該表上的觸發(fā)器被觸發(fā)
7.簡單介紹下ADO.NET和ADO主要有什么改進(jìn)?
答:ADO以Recordset存儲(chǔ),而ADO.NET則以DataSet表示,ADO.NET提供了數(shù)據(jù)集和數(shù)據(jù)適配器,有利于實(shí)現(xiàn)分布式處理,降低了對(duì)數(shù)據(jù)庫服務(wù)器資源的消耗。
7.1 ASP.NET與ASP相比,主要有哪些進(jìn)步?
答:ASP.NET實(shí)現(xiàn)了面向?qū)ο缶幊,預(yù)編譯的服務(wù)器端代碼而不像ASP那樣解釋執(zhí)行提高了性能,代碼分離易于管理,可訂制和擴(kuò)展性,功能強(qiáng)大的開發(fā)工作,更好的安全機(jī)制。
7.2 C#中的委托是什么?事件是不是一種委托?
答:委托本質(zhì)上是一種“方法接口”,它相當(dāng)于C/C++中的函數(shù)指針,當(dāng)然它比函數(shù)指針安全,在C#中通常用于事件處理。事件不是委托,不過由于事件的性質(zhì)決定了處理它的程序邏輯能訪問的參數(shù),因此,在C#中處理事件的邏輯都包裝為委托。
8.如何把一個(gè)array復(fù)制到arrayist里
答:foreach( object arr in array)arrayist.Add(arr);
8.1 列舉ADO.NET中的五個(gè)主要對(duì)象,并簡單描述
答:Connection連接對(duì)象,Command執(zhí)行命令和存儲(chǔ)過程,DataReader向前只讀的數(shù)據(jù)流,DataAdapter適配器,支持增刪查詢,DataSet數(shù)據(jù)級(jí)對(duì)象,相當(dāng)與內(nèi)存里的一張或多張表。
9.概述三層結(jié)構(gòu)體系
答:表示層(UI),業(yè)務(wù)邏輯層(BLL),數(shù)據(jù)訪問層(DAL)