版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)庫(kù)訪問技術(shù)ADO.NETADO.NET的起源1998年起,因?yàn)閃eb應(yīng)用程序的竄起,大大改變了許多應(yīng)用程序的設(shè)計(jì)方式,傳統(tǒng)的數(shù)據(jù)庫(kù)連線保存設(shè)計(jì)法無法適用于此類應(yīng)用程序,這讓ADO應(yīng)用程序遇到了很大的瓶頸,也讓微軟開始思考讓資料集(Resultset,在ADO中稱為Recordset)能夠離線化的能力,以及能在用戶端創(chuàng)建一個(gè)小型數(shù)據(jù)庫(kù)的概念,這個(gè)概念就是中離線型資料模型(disconnecteddatamodel)的基礎(chǔ),而在ADO的使用情形來看,數(shù)據(jù)庫(kù)連線以及資源耗用的情形較嚴(yán)重(像是Server-sidecursor或是Recordset.Open會(huì)保持連線狀態(tài)),在中也改良了這些組件,構(gòu)成了能夠減少數(shù)據(jù)庫(kù)連線和資源使用量的功能。XML的使用也是這個(gè)版本的重要發(fā)展之一。2000年,微軟的Microsoft.NET計(jì)劃開始成形,許多的微軟產(chǎn)品都冠上.NET的標(biāo)簽,ADO+也不例外,改名為并包裝到.NETFramework類別庫(kù)中,成為.NET平臺(tái)中唯一的資料存取組件。ADO.NET簡(jiǎn)介ADO.NET是一組向.NETFramework程序員公開數(shù)據(jù)訪問服務(wù)的類。ADO.NET為創(chuàng)建分布式數(shù)據(jù)共享應(yīng)用程序提供了一組豐富的組件。它提供了對(duì)關(guān)系數(shù)據(jù)、XML和應(yīng)用程序數(shù)據(jù)的訪問,因此是.NETFramework中不可缺少的一部分。ADO.NET支持多種開發(fā)需求,包括創(chuàng)建由應(yīng)用程序、工具、語言或Internet瀏覽器使用的前端數(shù)據(jù)庫(kù)客戶端和中間層業(yè)務(wù)對(duì)象。ADO.NET簡(jiǎn)介ADO.NET提供對(duì)諸如SQLServer和XML這樣的數(shù)據(jù)源以及通過OLEDB和ODBC公開的數(shù)據(jù)源的一致訪問。共享數(shù)據(jù)的使用方應(yīng)用程序可以使用ADO.NET連接到這些數(shù)據(jù)源,并可以檢索、處理和更新其中包含的數(shù)據(jù)。ADO.NET通過數(shù)據(jù)處理將數(shù)據(jù)訪問分解為多個(gè)可以單獨(dú)使用或一前一后使用的不連續(xù)組件。ADO.NET包含用于連接到數(shù)據(jù)庫(kù)、執(zhí)行命令和檢索結(jié)果的.NETFramework數(shù)據(jù)提供程序。這些結(jié)果或者被直接處理,放在ADO.NETDataSet對(duì)象中以便以特別的方式向用戶公開,并與來自多個(gè)源的數(shù)據(jù)組合;或者在層之間傳遞。DataSet對(duì)象也可以獨(dú)立于.NETFramework數(shù)據(jù)提供程序,用于管理應(yīng)用程序本地的數(shù)據(jù)或源自XML的數(shù)據(jù)。ADO.NET的結(jié)構(gòu)及組件ADO.NET用于訪問和操作數(shù)據(jù)的兩個(gè)主要組件是.NETFramework數(shù)據(jù)提供程序和DataSet。NETFramework數(shù)據(jù)提供程序.NETFramework數(shù)據(jù)提供程序是專門為數(shù)據(jù)操作以及快速、只進(jìn)、只讀訪問數(shù)據(jù)而設(shè)計(jì)的組件。主要包括Connection、Command、DataReader、DataAdapter四個(gè)對(duì)象ADO.NET的結(jié)構(gòu)及組件ADO.NETDataSet是專門為獨(dú)立于任何數(shù)據(jù)源的數(shù)據(jù)訪問而設(shè)計(jì)的。因此,它可以用于多種不同的數(shù)據(jù)源,用于XML數(shù)據(jù),或用于管理應(yīng)用程序本地的數(shù)據(jù)。DataSet包含一個(gè)或多個(gè)DataTable對(duì)象的集合,這些對(duì)象由數(shù)據(jù)行和數(shù)據(jù)列以及有關(guān)DataTable對(duì)象中數(shù)據(jù)的主鍵、外鍵、約束和關(guān)系信息組成。ADO.NET的結(jié)構(gòu)及組件ADO.NET數(shù)據(jù)提供程序SQLServer.NETFramework數(shù)據(jù)提供程序(System.Data.SqlClient)OLEDB.NETFramework數(shù)據(jù)提供程序(System.Data.OleDb)ODBC.NETFramework數(shù)據(jù)提供程序(System.Data.Odbc)Oracle.NETFramework數(shù)據(jù)提供程序(System.Data.OracleClient)Connection對(duì)象Connection對(duì)象提供與數(shù)據(jù)源的連接。要存取數(shù)據(jù)源內(nèi)的數(shù)據(jù),首先要建立程序和數(shù)據(jù)源之間的連接。屬性(1)ConnectionString:獲取或設(shè)置用于打開數(shù)據(jù)庫(kù)的字符串,包括字符串的內(nèi)容和數(shù)據(jù)提供器名稱。(2)State:獲取連接的當(dāng)前狀態(tài)方法(1)Open()方法:用于打開由ConnectionString屬性指定的數(shù)據(jù)源連接(2)Close()方法:關(guān)閉數(shù)據(jù)源連接Connection對(duì)象ImportsSystemImportsSystem.DataImportsSystem.Data.SqlClient…Dimsqlconn=newsqlconnnectionSqlconn.connectionStringAsString=_"DataSource=(local);InitialCatalog=Northwind;"_&"IntegratedSecurity=true"Sqlconn.open()Command對(duì)象使用Command對(duì)象可以訪問用于返回?cái)?shù)據(jù)、修改數(shù)據(jù)、運(yùn)行存儲(chǔ)過程以及發(fā)送或檢索參數(shù)信息的數(shù)據(jù)庫(kù)命令。1.用構(gòu)造函數(shù)創(chuàng)建SqlCommand對(duì)象,并通過該對(duì)象的構(gòu)造函數(shù)參數(shù)來設(shè)置特定屬性值,其語法格式如下:SqlCommand命令對(duì)象名=newSqlCommand(查詢字符串,連接對(duì)象名);
SqlCommandcom=newSqlCommand(string,conn);Command對(duì)象使用Command對(duì)象可以訪問用于返回?cái)?shù)據(jù)、修改數(shù)據(jù)、運(yùn)行存儲(chǔ)過程以及發(fā)送或檢索參數(shù)信息的數(shù)據(jù)庫(kù)命令。Command對(duì)象的屬性
UsingconnectionAsNewSqlConnection(connectionString)DimcommandAsSqlCommand=NewSqlCommand()command.Connection=connectioncommand.CommandText="SalesByCategory"command.CommandType=CommandType.StoredProcedureCommand對(duì)象的方法ExecuteNonQuery:執(zhí)行不返回任何行的命令。典型的例子是實(shí)現(xiàn)插入、更新和刪除。ExecuteReader:通過Connection對(duì)象下達(dá)命令至數(shù)據(jù)源,將數(shù)據(jù)作為一個(gè)DataReader對(duì)象返回。用于任何返回?cái)?shù)據(jù)的SQL查詢;ExecuteScalar:從數(shù)據(jù)庫(kù)中返回單獨(dú)值,例如與特定查詢相匹配的記錄數(shù),或者數(shù)據(jù)庫(kù)功能調(diào)用的結(jié)果。ExecuteReader代碼UsingconnectionAsNewSqlConnection(connectionString)DimcommandAsNewSqlCommand(queryString,connection)connection.Open()DimreaderAsSqlDataReader=command.ExecuteReader()DataReader對(duì)象當(dāng)Command對(duì)象返回結(jié)果集時(shí),需要使用DataReader對(duì)象來檢索數(shù)據(jù)。DataReader對(duì)象返回一個(gè)來自Command的只讀的、只能向前的數(shù)據(jù)流。DataReader每次只能在內(nèi)存中保留一行,所以開銷非常小。在與數(shù)據(jù)庫(kù)的交互中,要獲得數(shù)據(jù)訪問的結(jié)果可用兩種方法來實(shí)現(xiàn),第一種是通過DataReader對(duì)象從數(shù)據(jù)源中獲取數(shù)據(jù)并進(jìn)行處理;第二種是通過DataSet對(duì)象將數(shù)據(jù)放置在內(nèi)存中進(jìn)行處理。UsingconnectionDimcommandAsSqlCommand=NewSqlCommand(_"SELECTCategoryID,CategoryNameFROMCategories;",_connection)connection.Open()DimreaderAsSqlDataReader=command.ExecuteReader()Ifreader.HasRowsThenDoWhilereader.Read()Console.WriteLine(reader.GetInt32(0)_&vbTab&reader.GetString(1))LoopElseConsole.WriteLine("Norowsfound.")EndIfreader.Close()EndUsingDataAdapter對(duì)象DataAdapter對(duì)象是一個(gè)雙向通道,用來把數(shù)據(jù)從數(shù)據(jù)源中讀到一個(gè)內(nèi)存表中,以及把內(nèi)存中的數(shù)據(jù)寫回到一個(gè)數(shù)據(jù)源中。這兩種操作分別稱作填充(Fill)和更新(Update)。DataAdapter對(duì)象通過Fill方法和Update方法來提供這一橋接器。DimadapterAsSqlDataAdapter=NewSqlDataAdapter(_"SELECTCategoryID,CategoryNameFROMdbo.Categories",_connection)adapter.UpdateCommand=NewSqlCommand(_"UPDATECategoriesSETCategoryName=@CategoryName"&_"WHERECategoryID=@CategoryID",connection)adapter.UpdateCommand.Parameters.Add(_"@CategoryName",SqlDbType.NVarChar,15,"CategoryName")DimparameterAsSqlParameter=_adapter.UpdateCommand.Parameters.Add(_"@CategoryID",SqlDbType.Int)parameter.SourceColumn="CategoryID"parameter.SourceVersion=DataRowVersion.OriginalDimcategoryTableAsNewDataTableadapter.Fill(categoryTable)DimcategoryRowAsDataRow=categoryTable.Rows(0)categoryRow("CategoryName")="NewBeverages"adapter.Update(categoryTable)DataAdapter執(zhí)行對(duì)數(shù)據(jù)庫(kù)的操作
1.創(chuàng)建數(shù)據(jù)庫(kù)連接對(duì)象Connection;2.創(chuàng)建Select查詢語句或Command對(duì)象;3.創(chuàng)建DataAdapter對(duì)象;4.創(chuàng)建DataSet對(duì)象;5.為DataAdapter對(duì)象自動(dòng)生成更新命令;6.調(diào)用DataAdapter對(duì)象的Fill()方法填充DataSet對(duì)象;7.對(duì)DataTable中的特定記錄進(jìn)行增加、刪除、修改8.調(diào)用DataAdapter對(duì)象的Update()方法,將DataTable中的數(shù)據(jù)變化提交到數(shù)據(jù)庫(kù)。說明:當(dāng)調(diào)用Update方法時(shí),DataAdapter將分析已做出的更改并執(zhí)行相應(yīng)的命令(Insert,Update,Delete)。DataSetDataSet相當(dāng)于內(nèi)存中的數(shù)據(jù)庫(kù),在命名空間System.Data中定義;DataAdapter相當(dāng)于DataSet和物理數(shù)據(jù)源之間的橋梁。在DataSet內(nèi)部是一個(gè)或多個(gè)DataTable的集合,DataSet.Tables[“表名”]可獲取數(shù)據(jù)集中的一個(gè)表。在DataTable中執(zhí)行的插入、更新和刪除操作并不會(huì)自動(dòng)寫回?cái)?shù)據(jù)庫(kù)。如果想把更改寫回?cái)?shù)據(jù)庫(kù),則需要手動(dòng)去完成,這個(gè)操作由DataAdapter.Update完成。DataSet與DataAdapterDataSet是實(shí)現(xiàn)ADO.NET斷開式連接的核心,它通過DataAdapter從數(shù)據(jù)源獲得數(shù)據(jù)后就斷開了與數(shù)據(jù)源之間的連接(這一點(diǎn)與前面介紹過的DataReader對(duì)象完全不同),此后應(yīng)用程序所有對(duì)數(shù)據(jù)源的操作(定義約束和關(guān)系、添加、刪除、修改、查詢、排序、統(tǒng)計(jì)等等)均轉(zhuǎn)向到DataSet,當(dāng)所有這些操作完成后可以通過DataAdapter提供的數(shù)據(jù)源更新方法將修改后的數(shù)據(jù)寫入數(shù)據(jù)庫(kù)。DataSet的組成創(chuàng)建DataSet創(chuàng)建DataSet創(chuàng)建數(shù)據(jù)集對(duì)象的語法格式為:DataSet數(shù)據(jù)集對(duì)象名=newDataSet();或:DataSet數(shù)據(jù)集對(duì)象名=newDataSet("表名");填充DataSet所謂“填充”是指使用DataAdapter對(duì)象通過執(zhí)行SQL語句從數(shù)據(jù)源得到的返回結(jié)果,使用DataAdapter對(duì)象的Fill方法傳遞給DataSet對(duì)象。其常用語法格式如下所示:Adapter.Fill(ds);或:Adapter.Fill(ds,tablename);使用DataSet添加新記錄通過DataSet向數(shù)據(jù)表添加新記錄的一般方法如下:1)建立與數(shù)據(jù)庫(kù)的連接。2)通過DataAd
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 裝修垃圾運(yùn)輸協(xié)議書模板
- 某零售店員工激勵(lì)的二十大法則
- 個(gè)人錢幣轉(zhuǎn)讓合同范例
- 大門維修合同范例
- 游戲陪玩合同范例
- 安全承包合同范例
- 連砂石購(gòu)銷合同范例
- 還款j結(jié)清合同范例
- 商品樓裝修合同范例
- 郊區(qū)建筑施工合同范例
- 安防主管崗位招聘面試題及回答建議(某大型集團(tuán)公司)2025年
- 急診科運(yùn)用PDCA循環(huán)降低急診危重患者院內(nèi)轉(zhuǎn)運(yùn)風(fēng)險(xiǎn)品管圈QCC專案結(jié)題
- 《資治通鑒》導(dǎo)讀學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2024年統(tǒng)編版新教材語文小學(xué)一年級(jí)上冊(cè)全冊(cè)單元測(cè)試題及答案(共8單元)
- 2024-2025學(xué)年一年級(jí)上冊(cè)數(shù)學(xué)人教版期末模擬練習(xí)題(含答案)
- 可降解包裝材料采購(gòu)合作合同
- 醫(yī)院老人去世后遺體處理及管理流程
- 2025年中考數(shù)學(xué)考點(diǎn)分類專題歸納之二次函數(shù)
- 新能源發(fā)電技術(shù) 電子課件 2.5 可控核聚變及其未來利用方式
- GB/T 44264-2024光伏組件清潔機(jī)器人通用技術(shù)條件
- 2024至2030年中國(guó)頸部按摩器行業(yè)發(fā)展戰(zhàn)略規(guī)劃及市場(chǎng)規(guī)模預(yù)測(cè)報(bào)告
評(píng)論
0/150
提交評(píng)論