




已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
理學(xué)院畢業(yè)論文第1頁/共12頁英文翻譯VisualStudio.NET如何為并發(fā)控制生成SQL語句翻譯:翟靖軒原作者:SteveSteinVisualStudioTeamMicrosoftCorporation2002年2月摘要:這篇文章研究VisualStudio.NET為不同的并發(fā)控制方式所產(chǎn)生的SQL語句,如何對它們進(jìn)行修改可以提高執(zhí)行效率,以及如何生成不帶并發(fā)控制的SQL語句。目錄引言閱讀此文章時(shí)應(yīng)具備的一些知識生成的SQL語句在哪里并發(fā)與數(shù)據(jù)適配器(DataAdapter)優(yōu)化生成的SQL語句并發(fā)與CommandBuilder對象結(jié)論引言任何可能同時(shí)被多個(gè)用戶訪問或修改數(shù)據(jù)的應(yīng)用程序,都需要進(jìn)行并發(fā)控制。否則,一個(gè)用戶更改記錄時(shí)可能不經(jīng)意的覆蓋了其他用戶的更改。VisualStudio.NET的設(shè)計(jì)工具可以生成“保持所有值”方式的開放式并發(fā)SQL語句或生成“最后的更新生效”方式的SQL語句來更新數(shù)據(jù)。這篇文章將解釋:不同的SQL語句是如何生成的如何修改自動生成的SQL語句可以提高執(zhí)行效率閱讀此文章時(shí)應(yīng)具備的一些知識理學(xué)院畢業(yè)論文第2頁/共12頁你需要具備以下知識:基本的ADO.NET概念,包括數(shù)據(jù)集(DataSet)以及數(shù)據(jù)適配器(DataAdapters)。更多信息請參見ADO.NET數(shù)據(jù)訪問介紹(IntroductiontoDataAccesswithADO.NET)。數(shù)據(jù)并發(fā)機(jī)制以及會操作VisualStudio.NET。更多內(nèi)容請參見介紹ADO.NET中的數(shù)據(jù)并發(fā)(IntroductiontoDataConcurrencyinADO.NET)。自動生成的SQL語句在哪里自動生成的SQL語句在command對象的CommandText屬性里。在設(shè)計(jì)階段配置DataAdapter對象時(shí)或使用CommandBuilder對象時(shí)SQL命令被自動生成。更多信息,請參見并發(fā)與CommandBuilder對象(ConcurrencyandCommandBuilderObjects)。配置DataAdapter對象從工具箱的數(shù)據(jù)選項(xiàng)卡中拖一個(gè)DataAdapter對象從服務(wù)器資源管理器拖一個(gè)數(shù)據(jù)表選中已有的DataAdapter對象,然后單擊在屬性窗口底部的“配置數(shù)據(jù)適配器”鏈接CommandBuilder對象CommandBuilder對象在運(yùn)行時(shí)刻被創(chuàng)建,更多信息請參閱SqlCommandBuilder或OleDbCommandBuilder。并發(fā)控制與數(shù)據(jù)適配器(DataAdapter)使用“數(shù)據(jù)適配器配置向?qū)А迸渲脭?shù)據(jù)適配器時(shí),你可以選擇是否使用開放式并發(fā)來生成Update和Delete語句。一些思考和注意事項(xiàng)你的數(shù)據(jù)源必須有一個(gè)主鍵才能以開放式并發(fā)方式生成SQL語句當(dāng)使用從“服務(wù)器資源管理器”拖放一個(gè)數(shù)據(jù)表的方式來創(chuàng)建DataAdapter對象時(shí),DataAdapter對象自動生成基于開放式并發(fā)的Update和Delete語句。如果你不想使用開放式并發(fā),右擊DataAdapter對象,從快捷菜單中選擇“配置數(shù)據(jù)適配器”,然后在“高級SQL生成選項(xiàng)”對話框中清除“使用開放式并發(fā)”選項(xiàng)的選定。向?qū)t會重新創(chuàng)建不帶并發(fā)檢測的SQL語句。理學(xué)院畢業(yè)論文第3頁/共12頁當(dāng)重新配置現(xiàn)有的DataAdapter時(shí),應(yīng)注意“高級SQL生成選項(xiàng)”對話框里的選項(xiàng)已經(jīng)全部恢復(fù)默認(rèn)。例如最初配置DataAdapter時(shí)沒有選定“使用開放式并發(fā)”選項(xiàng),但是當(dāng)重新配置DataAdapter時(shí),“使用開放式并發(fā)”選項(xiàng)卻會被選定,即便你根本沒有打開過“高級SQL生成選項(xiàng)”對話框。如果你在“數(shù)據(jù)適配器配置向?qū)А钡摹斑x擇查詢類型”頁面選擇“使用現(xiàn)有的存儲過程”,則“使用開放式并發(fā)”選項(xiàng)將不可用。存儲過程仍按其原來的方式執(zhí)行。如果想使用并發(fā)檢測的話,必須將其包括到存儲過程中、或在你的應(yīng)用程序中編寫相應(yīng)的代碼。當(dāng)使用開放式并發(fā)來創(chuàng)建SQL命令時(shí),不會對二進(jìn)制數(shù)據(jù)列驗(yàn)證進(jìn)行并發(fā)處理。這將導(dǎo)致用這種方法對大的二進(jìn)制記錄集執(zhí)行按位比較算法時(shí)的效率低下。用向?qū)蒘QL語句為了理解VisualStudio.NET如何使用開放式并發(fā)來生成SQL語句,讓我們來看看用“數(shù)據(jù)適配器配置向?qū)А鄙傻腢pdate語句。我們將查看同一條語句在選擇“使用開放式并發(fā)”選項(xiàng)和不選擇“使用開放式并發(fā)”選項(xiàng)時(shí)的不同狀態(tài)。你會注意到,選擇開放式并發(fā)與不選擇開放式并發(fā)所生成SQL語句的區(qū)別只存在于Where子句上。注:以下的例子使用用“數(shù)據(jù)適配器配置向?qū)А鄙傻腢pdate語句,并從NorthWind示例數(shù)據(jù)庫的Customers表中選擇了若干列。使用開放式并發(fā)的Update語句這個(gè)例子使用了“數(shù)據(jù)適配器配置向?qū)А钡哪J(rèn)配置,即選中了“使用開放式并發(fā)”選項(xiàng)。注:當(dāng)使用開放式并發(fā)時(shí),生成的command的參數(shù)集里還存在一個(gè)參數(shù)副本。第二個(gè)參數(shù)集(帶Original_前綴的那個(gè))保存了最初從數(shù)據(jù)源里讀取的值。檢查Where子句發(fā)現(xiàn),每一個(gè)生成的語句都要檢測數(shù)據(jù)庫當(dāng)前的值是否等于最初讀取的值(例,WHERECity=Original_City)。通過數(shù)據(jù)庫中的每個(gè)字段與最初讀取的值相比較,我們很容易確定是否同時(shí)有其他用戶修改了某個(gè)字段。如果Where子句不成立,就沒有記錄會被修改,與此同時(shí)還引發(fā)了一個(gè)“數(shù)據(jù)庫并發(fā)”異常。如果數(shù)據(jù)源的某個(gè)字段為理學(xué)院畢業(yè)論文第4頁/共12頁空值(NULL),生成的SQL語句同樣驗(yàn)證最初讀取的記錄是否也為空值。UPDATECustomersSETCustomerID=CustomerID,CompanyName=CompanyName,ContactName=ContactName,ContactTitle=ContactTitle,City=CityWHERE(CustomerID=Original_CustomerID)AND(City=Original_CityOROriginal_CityISNULLANDCityISNULL)AND(CompanyName=Original_CompanyName)AND(ContactName=Original_ContactNameOROriginal_ContactNameISNULLANDContactNameISNULL)AND(ContactTitle=Original_ContactTitleOROriginal_ContactTitleISNULLANDContactTitleISNULL);SELECTCustomerID,CompanyName,ContactName,ContactTitle,CityFROMCustomersWHERE(CustomerID=CustomerID)不使用開放式并發(fā)的Update語句這個(gè)例子更改了“數(shù)據(jù)適配器配置向?qū)А钡母呒夁x項(xiàng),沒有選中“使用開放式并發(fā)”選項(xiàng)。以下的語句表明:只要數(shù)據(jù)庫中一條記錄滿足CustomerID=Original_CustomerID,則所有的字段都會被更新。不管這條記錄現(xiàn)在是什么樣的值,它都將被設(shè)置為通過SQL語句傳遞到數(shù)據(jù)源的值。在這里沒有任何關(guān)于并發(fā)的檢測,也無法得知是否同時(shí)有其它用戶在更改這條記錄。這種方式稱為“最后的更新生效”方式。無論以前對這條記錄進(jìn)行過什么樣的修改,更新操作都會執(zhí)行。UPDATECustomersSETCustomerID=CustomerID,CompanyName=CompanyName,ContactName=ContactName,ContactTitle=ContactTitle,City=CityWHERE(CustomerID=Original_CustomerID);SELECTCustomerID,CompanyName,ContactName,ContactTitle,CityFROMCustomersWHERE(CustomerID=Customer
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 市政單位給水排水方案
- 汽車交互面試題及答案
- 門診操作考試題及答案
- 上海小學(xué)考試題及答案
- 微軟面試題試題及答案
- 餐飲行業(yè)大堂經(jīng)理職位競聘與福利保障合同
- 銅礦開采規(guī)劃方案
- 糖廠安裝施工造價(jià)方案
- 車間水泥墻改造方案
- 春季招工用工方案
- DB11/T 147-2015-檢查井蓋結(jié)構(gòu)、安全技術(shù)規(guī)范
- JJG 875-2019數(shù)字壓力計(jì)行業(yè)標(biāo)準(zhǔn)
- 創(chuàng)新型QC成果課件
- 公務(wù)用車定點(diǎn)維修服務(wù)質(zhì)量保障方案
- 柴油錘擊樁施工方案樣本
- 教師培訓(xùn)成果分享課件
- 罐區(qū)安全培訓(xùn)課件
- 大理市房地產(chǎn)市場調(diào)研報(bào)告
- 《輔行訣五臟用藥法要》解讀
- 領(lǐng)導(dǎo)干部報(bào)告?zhèn)€人有關(guān)事項(xiàng)檢討14篇
- 計(jì)算機(jī)組成原理(本全)白中英課件
評論
0/150
提交評論