共1 條記錄, 每頁(yè)顯示 10 條, 頁(yè)簽:
[1]
1樓
wangxinxin 發(fā)表于:2010-12-13 13:13:08
這段時(shí)間開(kāi)始有幸學(xué)習(xí)了ado.net訪問(wèn)數(shù)據(jù)庫(kù)的一些內(nèi)容。我開(kāi)始思考一個(gè)有關(guān)數(shù)據(jù)庫(kù)事務(wù)控制的問(wèn)題。ado.net中的SqlTransaction 類可以為數(shù)據(jù)庫(kù)訪問(wèn)提供事務(wù)的支持。你可以打開(kāi)一個(gè)數(shù)據(jù)庫(kù)聯(lián)接,然后在這個(gè)聯(lián)接上啟動(dòng)一個(gè)事務(wù)(啟動(dòng)事務(wù)相當(dāng)于T-SQL的begin transaction語(yǔ)句),在這個(gè)啟動(dòng)了事務(wù)的數(shù)據(jù)庫(kù)聯(lián)接上你可以添加并執(zhí)行若干數(shù)據(jù)庫(kù)訪問(wèn)命令,然后根據(jù)命令的執(zhí)行情況決定提交或者回滾事務(wù)。這使得通過(guò)ado.net訪問(wèn)數(shù)據(jù)庫(kù)的應(yīng)用程序可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)的事務(wù)控制。
另一方面,T-SQL同樣提供了數(shù)據(jù)庫(kù)的事務(wù)控制,這是眾所周知的。通常,數(shù)據(jù)庫(kù)設(shè)計(jì)人員常說(shuō),把數(shù)據(jù)的訪問(wèn)控制放在離數(shù)據(jù)最近的地方才是最安全的,比如我們?cè)O(shè)計(jì)數(shù)據(jù)庫(kù)時(shí),在數(shù)據(jù)表上實(shí)現(xiàn)的唯一約束、check約束、觸發(fā)器等等都是基于這種設(shè)計(jì)思想的。類似ado.net這種的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)也提供了對(duì)數(shù)據(jù)庫(kù)事務(wù)的支持,但是按照“把數(shù)據(jù)的訪問(wèn)控制放在離數(shù)據(jù)最近的地方才是最安全的”的思想,我們有更好的選擇方式。比如,我們可以設(shè)計(jì)數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程,由存儲(chǔ)過(guò)程提供事務(wù)控制,并只允許數(shù)據(jù)庫(kù)客戶端訪問(wèn)數(shù)據(jù)庫(kù)時(shí)去執(zhí)行存儲(chǔ)過(guò)程。這樣一來(lái),似乎就沒(méi)有使用ado.net、ado、oledb等等這些數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)提供的支持事務(wù)的API接口的必要了。但是,我想未必是這樣的,既然有這些API接口存在,肯定是有它的必要性的。
我現(xiàn)在想讓大家討論一下,你們?cè)趯?shí)際應(yīng)用中使用過(guò)某種數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)的事務(wù)功能嗎?這種應(yīng)用是在什么請(qǐng)況下比較有價(jià)值呢?
共1 條記錄, 每頁(yè)顯示 10 條, 頁(yè)簽:
[1]