在斷開連接的環(huán)境中編輯和更新數(shù)據(jù)_第1頁
在斷開連接的環(huán)境中編輯和更新數(shù)據(jù)_第2頁
在斷開連接的環(huán)境中編輯和更新數(shù)據(jù)_第3頁
在斷開連接的環(huán)境中編輯和更新數(shù)據(jù)_第4頁
在斷開連接的環(huán)境中編輯和更新數(shù)據(jù)_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

在斷開連接的環(huán)境中編輯和更新數(shù)據(jù)第一頁,共二十三頁,編輯于2023年,星期五體驗第二頁,共二十三頁,編輯于2023年,星期五DataAdapter簡介在ADO.NET中,DataSet是數(shù)據(jù)在內(nèi)存中的表示形式,它提供了獨立于數(shù)據(jù)源的關(guān)系編程模型。

第三頁,共二十三頁,編輯于2023年,星期五.NETFramework中的DataAdapter類

.NETFramework2.0包括DataAdapter類,如下下表所示。DataAdapter類 描述System.Data.SqlClient.SqlDataAdapterSQLServer.NETFramework數(shù)據(jù)提供程序DataAdapter類System.Data.OleDbClient.OleDbDataAdapterOLEDB.NETFramework數(shù)據(jù)提供程序DataAdapter類System.Data.Odbc.OdbcDataAdapterODBC.NETFramework數(shù)據(jù)提供程序DataAdapter類System.Data.OracleClient.OracleDataAdapterOracle.NETFramework數(shù)據(jù)提供程序DataAdapter類第四頁,共二十三頁,編輯于2023年,星期五通過VisualStudio2005創(chuàng)建DataAdapter通過編程方式創(chuàng)建DataAdapter第五頁,共二十三頁,編輯于2023年,星期五通過編程方式創(chuàng)建DataAdapterSqlDataAdapter構(gòu)造函數(shù)支持四種重載。此時所使用的重載SqlDataAdapter(testCommand)允許在構(gòu)造函數(shù)中指定帶有有效連接的命令。其他三種可用的重載如下。SqlDataAdapter():設(shè)置SqlDataAdapter的一個空實例SqlDataAdapter(stringcommandText,SqlConnectionconnection):允許指定用于填充DataSet/DataTable的命令(作為字符串)以及填充時將用到的連接SqlDataAdapter(stringcommandText,stringconnectionString):允許將命令和相關(guān)連接都作為字符串來指定;第六頁,共二十三頁,編輯于2023年,星期五DataAdapter的屬性DataAdapter所提供的主要屬性及其描述如下表所示。屬性描述SelectCommand在數(shù)據(jù)源中檢索數(shù)據(jù)的數(shù)據(jù)命令I(lǐng)nsertCommand在數(shù)據(jù)源中插入數(shù)據(jù)的數(shù)據(jù)命令UpdateCommand在數(shù)據(jù)源中更新數(shù)據(jù)的數(shù)據(jù)命令DeleteCommand在數(shù)據(jù)源中刪除數(shù)據(jù)的數(shù)據(jù)命令TableMappingsDataTableMapping對象的集合,決定DataSet中的行與數(shù)據(jù)源之間的關(guān)系UpdateBatchSize決定批進(jìn)程支持,指出在批處理中可執(zhí)行的命令的數(shù)量第七頁,共二十三頁,編輯于2023年,星期五DataAdapter的方法使用DataAdapter的Fill()方法填充DataSetDataAdapter有兩個重要的方法:Fill()和Update()。前者從數(shù)據(jù)源把數(shù)據(jù)加載至DataSet,后者把數(shù)據(jù)從DataSet傳回數(shù)據(jù)源。使用DataAdapter的Update()方法更新DataSet第八頁,共二十三頁,編輯于2023年,星期五更新數(shù)據(jù)時的狀態(tài)管理在連接、獲取、斷開、修改、重新連接和持久保存更改等一系列過程中,可能需要考慮很多事情??赡苄枰獩Q定插入、刪除或更新某些行其他用戶可能同時保存其更改,您在DataSet中所保存的查詢數(shù)據(jù)可能已無效為新插入的記錄所生成的鍵值可能不正確在設(shè)法進(jìn)行更新之后,可能需要將當(dāng)前數(shù)據(jù)的刷新版本取回應(yīng)用程序第九頁,共二十三頁,編輯于2023年,星期五更新數(shù)據(jù)時的狀態(tài)管理DataRowState枚舉的各種值及其相應(yīng)的含義如下表所示。常量值描述Detached1在任何給定時間,一個DataRow最多只能連接到一個

DataTable。如果未連接到任何

DataTable,則該行的狀態(tài)為脫離UnChanged2此行從數(shù)據(jù)源獲取,并且未進(jìn)行任何更改Added4此行從數(shù)據(jù)源獲取,并且已添加到DataTable中。在更新期間,DataAdapter將對其執(zhí)行InsertCommandDeleted8此行從數(shù)據(jù)源獲取,然后從DataTable中刪除。在更新期間,DataAdapter將對其執(zhí)行DeleteCommandModified16此行從數(shù)據(jù)源獲取,并且已經(jīng)被修改過。在更新期間,數(shù)據(jù)適配器將對其執(zhí)行UpdateCommand第十頁,共二十三頁,編輯于2023年,星期五創(chuàng)建并使用SqlBulkCopy的步驟如下。用SqlBulkCopy移動大量數(shù)據(jù)首先添加一個新的控制臺應(yīng)用程序,并將其命名為SqlBulkCopy。第三行“張宇”保持不變此應(yīng)用程序的目的是演示在兩個相同結(jié)構(gòu)的表之間可以相當(dāng)快地復(fù)制數(shù)據(jù)由于該應(yīng)用程序操作的對象是同一個數(shù)據(jù)庫,因此只需要一個連接字符串;但是,需要兩個不同的SqlConnection:一個用于SqlBulkCopy將要讀取的DataReader,另一個用于SqlBulkCopy本身應(yīng)用程序的第二部分使用SqlBulkCopy對象實例將從創(chuàng)建的DataReader讀取的數(shù)據(jù)插入員工副本表操作完成代碼示例C#代碼示例VB第十一頁,共二十三頁,編輯于2023年,星期五DataTable公開了一系列可以由應(yīng)用程序捕獲并處理的事件。DataTable事件事件描述ColumnChanged在值被成功插入列時發(fā)生ColumnChanging在值被提交給列時發(fā)生RowChanged在成功更改DataRow之后發(fā)生RowChanging在DataRow正在更改時發(fā)生RowDeleted在表中的行被刪除后發(fā)生RowDeleting在表中的行被標(biāo)記為刪除時發(fā)生TableClearing當(dāng)表正在被清除時發(fā)生TableCleared當(dāng)表已被清除時發(fā)生TableNewRow在表中新增一行后立即發(fā)生第十二頁,共二十三頁,編輯于2023年,星期五DataColumnChangeEventArgs對象所提供三個屬性及其描述如下表所示。DataTable事件(續(xù))屬性描述Column獲取其值將要改變的DataColumn對象ProposedValue獲取或者設(shè)置目標(biāo)值。這就是要賦給列的新值。例如,在ColumnChanging事件處理程序中,可以查看ProposedValue,接受或拒絕該值的變化Row獲取其值將要改變的DataRow對象第十三頁,共二十三頁,編輯于2023年,星期五DataRowChangeEventArgs所提供的兩個屬性及其描述如下表所示。DataTable事件(續(xù))屬性描述Action獲取將要或已經(jīng)在DataRow上發(fā)生的動作(例如,添加、修改或刪除)Row獲取將要或已經(jīng)發(fā)生動作的DataRow對象第十四頁,共二十三頁,編輯于2023年,星期五DataTableClearTableEventHandler所提供的三個屬性及其描述如下表所示。DataTable事件(續(xù))屬性描述Table獲取正在被清除的表TableName獲取表名TableNamespace獲取給定表的命名空間。這在XML轉(zhuǎn)換中特別有用第十五頁,共二十三頁,編輯于2023年,星期五如前所述,DataTable事件可以分成以下三大類別?;诹械模篊olumnChanging,ColumnChanged基于行的:RowChanging,RowChanged,RowDeleting,RowDeleted基于表的:TableClearing,TableCleared,TableNewRowDataTable事件(續(xù))第十六頁,共二十三頁,編輯于2023年,星期五使用GetChanges方法的時機GetChanges和Merge在DataSet中獲得更改的示例將更改合并到DataSet第十七頁,共二十三頁,編輯于2023年,星期五習(xí)題1.多選題:以下關(guān)于DataAdapter對象的描述,______是正確的。A.DataAdapter對象可以用來檢查查詢結(jié)果B.DataAdapter對象可以作為數(shù)據(jù)庫和斷開連接對象之間的網(wǎng)橋C.DataAdapter對象可提取查詢結(jié)果以便脫機時使用D.DataAdapter對象可以把脫機使用時所做的更改提交到數(shù)據(jù)庫中 第十八頁,共二十三頁,編輯于2023年,星期五習(xí)題(續(xù))2.多選題:DataSet和DataAdapter之間的區(qū)別是______。A.DataSet在斷開連接的緩存中存儲數(shù)據(jù)B.DataAdapter對象是DataSet和數(shù)據(jù)源之間檢索或保存數(shù)據(jù)的橋梁C.DataSet公開由表、行和列所組成的分層對象模型D.DataAdapter類表示一組數(shù)據(jù)庫命令以及可用做填充DataSet和更新數(shù)據(jù)源的數(shù)據(jù)庫連接 第十九頁,共二十三頁,編輯于2023年,星期五習(xí)題(續(xù))3.多選題:方法_____能更有效地使用DataAdapter填充DataSet。A.使用與DataAdapter所傳入的數(shù)據(jù)結(jié)構(gòu)相同的類型化DataSetB.在填充DataSet之前,調(diào)用BeginLoadData()方法C.在使用多個有相同連接的DataAdapter填充DataSet之前,顯式地打開連接D.使用DataAdapter對象的TableMappings集合第二十頁,共二十三頁,編輯于2023年,星期五習(xí)題(續(xù))4.為了將數(shù)據(jù)更改持久地保存到數(shù)據(jù)源,將按______順序調(diào)用各種方法。(1)調(diào)用Update()方法(2)調(diào)用GetChanges()方法(3)調(diào)用Merge()方法(4)調(diào)用AcceptChanges()方法A.(1)(2)(3)(4)B.(4)(1)(2)(3)C.(2)(3)(1)(4)D.(1)(3)(4)(2)

第二十一頁,共二十三頁,編輯于2023年,星期五習(xí)題(續(xù))5.準(zhǔn)備將記錄從一個數(shù)據(jù)庫傳輸?shù)搅硪粋€數(shù)據(jù)庫。只需確保源數(shù)據(jù)庫是MicrosoftSQLServer,就能使用SqlBulkCopy類來傳輸記錄嗎?第二十二

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論