




已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
理學院畢業(yè)論文第1頁/共12頁英文翻譯VisualStudio.NET如何為并發(fā)控制生成SQL語句翻譯:翟靖軒原作者:SteveSteinVisualStudioTeamMicrosoftCorporation2002年2月摘要:這篇文章研究VisualStudio.NET為不同的并發(fā)控制方式所產(chǎn)生的SQL語句,如何對它們進行修改可以提高執(zhí)行效率,以及如何生成不帶并發(fā)控制的SQL語句。目錄引言閱讀此文章時應(yīng)具備的一些知識生成的SQL語句在哪里并發(fā)與數(shù)據(jù)適配器(DataAdapter)優(yōu)化生成的SQL語句并發(fā)與CommandBuilder對象結(jié)論引言任何可能同時被多個用戶訪問或修改數(shù)據(jù)的應(yīng)用程序,都需要進行并發(fā)控制。否則,一個用戶更改記錄時可能不經(jīng)意的覆蓋了其他用戶的更改。VisualStudio.NET的設(shè)計工具可以生成“保持所有值”方式的開放式并發(fā)SQL語句或生成“最后的更新生效”方式的SQL語句來更新數(shù)據(jù)。這篇文章將解釋:不同的SQL語句是如何生成的如何修改自動生成的SQL語句可以提高執(zhí)行效率閱讀此文章時應(yīng)具備的一些知識理學院畢業(yè)論文第2頁/共12頁你需要具備以下知識:基本的ADO.NET概念,包括數(shù)據(jù)集(DataSet)以及數(shù)據(jù)適配器(DataAdapters)。更多信息請參見ADO.NET數(shù)據(jù)訪問介紹(IntroductiontoDataAccesswithADO.NET)。數(shù)據(jù)并發(fā)機制以及會操作VisualStudio.NET。更多內(nèi)容請參見介紹ADO.NET中的數(shù)據(jù)并發(fā)(IntroductiontoDataConcurrencyinADO.NET)。自動生成的SQL語句在哪里自動生成的SQL語句在command對象的CommandText屬性里。在設(shè)計階段配置DataAdapter對象時或使用CommandBuilder對象時SQL命令被自動生成。更多信息,請參見并發(fā)與CommandBuilder對象(ConcurrencyandCommandBuilderObjects)。配置DataAdapter對象從工具箱的數(shù)據(jù)選項卡中拖一個DataAdapter對象從服務(wù)器資源管理器拖一個數(shù)據(jù)表選中已有的DataAdapter對象,然后單擊在屬性窗口底部的“配置數(shù)據(jù)適配器”鏈接CommandBuilder對象CommandBuilder對象在運行時刻被創(chuàng)建,更多信息請參閱SqlCommandBuilder或OleDbCommandBuilder。并發(fā)控制與數(shù)據(jù)適配器(DataAdapter)使用“數(shù)據(jù)適配器配置向?qū)А迸渲脭?shù)據(jù)適配器時,你可以選擇是否使用開放式并發(fā)來生成Update和Delete語句。一些思考和注意事項你的數(shù)據(jù)源必須有一個主鍵才能以開放式并發(fā)方式生成SQL語句當使用從“服務(wù)器資源管理器”拖放一個數(shù)據(jù)表的方式來創(chuàng)建DataAdapter對象時,DataAdapter對象自動生成基于開放式并發(fā)的Update和Delete語句。如果你不想使用開放式并發(fā),右擊DataAdapter對象,從快捷菜單中選擇“配置數(shù)據(jù)適配器”,然后在“高級SQL生成選項”對話框中清除“使用開放式并發(fā)”選項的選定。向?qū)t會重新創(chuàng)建不帶并發(fā)檢測的SQL語句。理學院畢業(yè)論文第3頁/共12頁當重新配置現(xiàn)有的DataAdapter時,應(yīng)注意“高級SQL生成選項”對話框里的選項已經(jīng)全部恢復默認。例如最初配置DataAdapter時沒有選定“使用開放式并發(fā)”選項,但是當重新配置DataAdapter時,“使用開放式并發(fā)”選項卻會被選定,即便你根本沒有打開過“高級SQL生成選項”對話框。如果你在“數(shù)據(jù)適配器配置向?qū)А钡摹斑x擇查詢類型”頁面選擇“使用現(xiàn)有的存儲過程”,則“使用開放式并發(fā)”選項將不可用。存儲過程仍按其原來的方式執(zhí)行。如果想使用并發(fā)檢測的話,必須將其包括到存儲過程中、或在你的應(yīng)用程序中編寫相應(yīng)的代碼。當使用開放式并發(fā)來創(chuàng)建SQL命令時,不會對二進制數(shù)據(jù)列驗證進行并發(fā)處理。這將導致用這種方法對大的二進制記錄集執(zhí)行按位比較算法時的效率低下。用向?qū)蒘QL語句為了理解VisualStudio.NET如何使用開放式并發(fā)來生成SQL語句,讓我們來看看用“數(shù)據(jù)適配器配置向?qū)А鄙傻腢pdate語句。我們將查看同一條語句在選擇“使用開放式并發(fā)”選項和不選擇“使用開放式并發(fā)”選項時的不同狀態(tài)。你會注意到,選擇開放式并發(fā)與不選擇開放式并發(fā)所生成SQL語句的區(qū)別只存在于Where子句上。注:以下的例子使用用“數(shù)據(jù)適配器配置向?qū)А鄙傻腢pdate語句,并從NorthWind示例數(shù)據(jù)庫的Customers表中選擇了若干列。使用開放式并發(fā)的Update語句這個例子使用了“數(shù)據(jù)適配器配置向?qū)А钡哪J配置,即選中了“使用開放式并發(fā)”選項。注:當使用開放式并發(fā)時,生成的command的參數(shù)集里還存在一個參數(shù)副本。第二個參數(shù)集(帶Original_前綴的那個)保存了最初從數(shù)據(jù)源里讀取的值。檢查Where子句發(fā)現(xiàn),每一個生成的語句都要檢測數(shù)據(jù)庫當前的值是否等于最初讀取的值(例,WHERECity=Original_City)。通過數(shù)據(jù)庫中的每個字段與最初讀取的值相比較,我們很容易確定是否同時有其他用戶修改了某個字段。如果Where子句不成立,就沒有記錄會被修改,與此同時還引發(fā)了一個“數(shù)據(jù)庫并發(fā)”異常。如果數(shù)據(jù)源的某個字段為理學院畢業(yè)論文第4頁/共12頁空值(NULL),生成的SQL語句同樣驗證最初讀取的記錄是否也為空值。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語句這個例子更改了“數(shù)據(jù)適配器配置向?qū)А钡母呒夁x項,沒有選中“使用開放式并發(fā)”選項。以下的語句表明:只要數(shù)據(jù)庫中一條記錄滿足CustomerID=Original_CustomerID,則所有的字段都會被更新。不管這條記錄現(xiàn)在是什么樣的值,它都將被設(shè)置為通過SQL語句傳遞到數(shù)據(jù)源的值。在這里沒有任何關(guān)于并發(fā)的檢測,也無法得知是否同時有其它用戶在更改這條記錄。這種方式稱為“最后的更新生效”方式。無論以前對這條記錄進行過什么樣的修改,更新操作都會執(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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 原料期貨交割倉儲物流與保險服務(wù)合同
- 股權(quán)質(zhì)押與互聯(lián)網(wǎng)金融合同
- 國際體育賽事贊助獨家授權(quán)與合作框架協(xié)議
- 替身保險補充協(xié)議針對高風險職業(yè)保障
- 水利工程建筑材料采購及施工監(jiān)管補充協(xié)議
- 風險分散型電力備用資源補充協(xié)議
- 重癥肺炎護理措施
- 人體經(jīng)絡(luò)護理圖解
- 中醫(yī)治療耳鳴的理論與實踐
- 2025年植物施藥保護機械項目合作計劃書
- 高中地理學業(yè)水平合格性考試必修二知識點總結(jié)(會考)
- 職業(yè)升學就業(yè)協(xié)議書
- 旅行導游協(xié)議書
- 2024年新牛津譯林版三年級上冊英語 Unit 1 Hello!第三課時
- 2025年工程管理知識試題及答案
- 2025屆百師聯(lián)盟高三下學期二輪復習聯(lián)考(三)地理試題(含答案)
- 節(jié)目腳本委托合同協(xié)議
- 2025年下半年河北省邢臺路橋建設(shè)總公司招聘50人易考易錯模擬試題(共500題)試卷后附參考答案
- 2024年山東濟南先行投資集團有限責任公司招聘考試真題
- 急性心梗診療(2025 )
- 2024中國醫(yī)藥行業(yè)人才發(fā)展報告-智聯(lián)招聘-202404
評論
0/150
提交評論