




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第19章 在程序中訪問數(shù)據(jù)庫,19.1 ADO.NET與.NET 19.2 ADO.NET與ADO 19.3 深入ADO.NET 19.4 數(shù)據(jù)控件 19.5 數(shù)據(jù)綁定控件 19.6 小結(jié),19.1 ADO.NET與.NET,ADO.NET由微軟公司推出,基于.NET平臺,面向分布式,是以XML數(shù)據(jù)格式為核心的一種數(shù)據(jù)庫訪問技術(shù),其主要特點如下。 ADO.NET是.NET框架中非常重要的一部分,且ADO.NET必須在.NET框架支持下才能運行。 XML是ADO.NET的基礎(chǔ),即從數(shù)據(jù)源里獲取的數(shù)據(jù)都是以XML格式保存。 ADO.NET的主要功能就是提供數(shù)據(jù)訪問類。,19.1 ADO.NET與.
2、NET,ADO.NET體系結(jié)構(gòu),19.2 ADO.NET與ADO,19.2.1 ADO概述 數(shù)據(jù)訪問方式的發(fā)展階段: ODBC(Open Database Connectivity) OLEDB(Object Linking and Embedding Database) ADO(ActiveX Data Objects) ADO的常用3個對象如下。 Connection對象 Command對象 Recordset對象,19.2.1 ADO概述,典型的ADO對象編程步驟: 連接到數(shù)據(jù)源。 指定訪問數(shù)據(jù)源的命令,可以同時指定變量參數(shù),通常會涉及到Command對象。 執(zhí)行命令,如果命令使數(shù)據(jù)按表
3、中行的形式返回,則將這些數(shù)據(jù)存儲在易于檢查、操作或更改的緩存Recordset中。 在適當情況下,可以通過修改緩存行的內(nèi)容來更新數(shù)據(jù)源。 結(jié)束操作,釋放數(shù)據(jù)連接Connection和內(nèi)存中的緩存Recordset,關(guān)閉操作命令Command。,19.2.2 ADO.NET與ADO的關(guān)系,ADO與ADO.NET既相似也有區(qū)別,它們的相似之處是都能夠編寫對數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)進行訪問和操作的應(yīng)用程序,并且易使用、高速度、低內(nèi)存消耗且占用磁盤空間較少,支持建立基于客戶端/服務(wù)器和Web的應(yīng)用程序的功能。它們的主要區(qū)別如下。 ADO使用OLE DB接口并基于微軟的COM技術(shù),而ADO.NET擁有自己的
4、ADO.NET接口并且基于微軟的.NET體系架構(gòu)。 ADO以Recordset存儲,而ADO.NET則以DataSet表示。 總之,由于ADO使用COM技術(shù),這就要求所使用的數(shù)據(jù)類型必須符合COM規(guī)范,而ADO.NET基于XML格式,XML靈活多變的基于文本的結(jié)構(gòu)使得它能夠應(yīng)用于相當廣泛的網(wǎng)絡(luò)作業(yè),并且不需要再做COM編排導致的數(shù)據(jù)類型轉(zhuǎn)換,從而提高了平臺互用性和整體性能。,19.3 深入ADO.NET,19.3.1 .NET數(shù)據(jù)提供程序 .NET Framework數(shù)據(jù)提供程序用于連接到數(shù)據(jù)庫、執(zhí)行命令和檢索結(jié)果。.NET Framework提供了如下幾個.NET Framework數(shù)據(jù)提供
5、程序。 OLE DB .NET Framework數(shù)據(jù)提供程序。 SQL Server .NET Framework數(shù)據(jù)提供程序。 ODBC .NET Framework數(shù)據(jù)提供程序。 Oracle .NET Framework數(shù)據(jù)提供程序。,19.3.1 .NET數(shù)據(jù)提供程序,.NET Framework數(shù)據(jù)提供程序提供了4個核心類,這4個核心類其功能如下。 Connection類:建立與特定數(shù)據(jù)源的連接。 Command類:對數(shù)據(jù)源執(zhí)行數(shù)據(jù)庫命令,用于返回數(shù)據(jù)、修改數(shù)據(jù)、運行存儲過程以及發(fā)送或檢索參數(shù)信息等。 DataReader類:從數(shù)據(jù)源中讀取只向前的只讀數(shù)據(jù)流,它是一個簡易的數(shù)據(jù)流。
6、 DataAdapter類:用于將數(shù)據(jù)源的數(shù)據(jù)填充至DataSet數(shù)據(jù)集并解析更新數(shù)據(jù)集??梢哉f,DataAdpater類是.NET數(shù)據(jù)提供程序與DataSet之間的一座橋梁。,19.3.2 Connection類,Connection類用于連接數(shù)據(jù)庫,也可使用Command類,它會隱含創(chuàng)建一個Connection對象。 在使用Connection類時,一般可以使用無參數(shù)的構(gòu)造函數(shù)創(chuàng)建Connection類實例,然后設(shè)置ConnectionString屬性,也可以直接使用帶參數(shù)的構(gòu)造函數(shù)創(chuàng)建Connection類實例。,19.3.2 Connection類,示例: 使用無參數(shù)的構(gòu)造函數(shù)來創(chuàng)建C
7、onnection對象,其語法形式如下。 string str = Data Source=localhost;Initial Catalog=book;Persist Security Info=True;User ID=admin;Password=123; SqlConnection sqlcon = new SqlConnection(); Sqlcon. ConnectionString= str; 利用帶參數(shù)的構(gòu)造函數(shù)創(chuàng)建SqlConnection實例,其語法形式如下。 string str = Data Source=localhost;Initial Catalog=book;
8、Persist Security Info=True;User ID=admin;Password=123; SqlConnection sqlcon = new SqlConnection(str);,19.3.2 Connection類,SqlConnection連接字符串中各項的意義如下。 Data Source:設(shè)置要連接的SQL Server實例所在的服務(wù)器名或網(wǎng)絡(luò)地址,localhost表示本機。 Initial Catalog:設(shè)置要連接的數(shù)據(jù)庫名。 Persist Security Info:表示是否保存安全信息。 User ID:設(shè)置數(shù)據(jù)庫訪問者的姓名。 PassWord:設(shè)
9、置數(shù)據(jù)庫訪問者的密碼。 Connection對象的常用方法如下。 Open()方法:建立數(shù)據(jù)庫連接。當創(chuàng)建完Connection對象之后,應(yīng)調(diào)用Open()方法才能建立數(shù)據(jù)庫連接。 Close()方法:斷開數(shù)據(jù)庫連接。當數(shù)據(jù)庫連接使用完畢后,應(yīng)調(diào)用Close()方法及時斷開數(shù)據(jù)庫連接。,19.3.3 Command類,Command類用于完成對數(shù)據(jù)源的各種操作,包括查詢、插入、刪除、更新操作??梢允褂肧QL語句來完成這些操作。 示例: 使用無參數(shù)構(gòu)造函數(shù)來創(chuàng)建SqlCommand對象,例如下列代碼。 SqlCommand command = new SqlCommand(); command.
10、CommandType = CommandType.Text; command.Connection=myconn; 使用帶參數(shù)構(gòu)造函數(shù)創(chuàng)建SqlCommand對象,參數(shù)為查詢Sql語句,而且只能是查詢語句,例如下列代碼。 string sqlstr = select * from book; SqlCommand command = new SqlCommand(sqlstr); command.CommandType = CommandType.Text; command.Connection=myconn; 使用帶參數(shù)構(gòu)造函數(shù)創(chuàng)建SqlCommand對象,參數(shù)為查詢Sql語句且只能是查詢
11、語句和SqlConnection對象,例如下列代碼。 string sqlstr = select * from book; SqlCommand command = new SqlComman,19.3.3 Command類,Command對象的常用屬性如下。 CommandType屬性:表示如何解釋指令字符串,屬性值為Text(SQL文本命令,默認)、StoredProcedure(存儲過程)。 CommandText屬性:當CommandType為Text時,CommandText為SQL語句;當CommandType為StoredProcedure時,CommandText為存儲過程名
12、稱。 Connection屬性:表示Command類使用的Connection對象。 Parameters屬性:該屬性用于表示與SqlCommand對象相關(guān)聯(lián)的參數(shù)的集合。 Command對象的常用方法如下。 ExecuteReader方法:返回DataReader對象,包含一個或多個行。 ExecuteNonQuery方法:執(zhí)行非查詢的SQL語句并返回受影響的行數(shù)。 ExecuteScalar方法:返回結(jié)果集中第一行的第一列,常用于當SQL語句查詢聚合值時,返回聚合值,例如查詢某班的學生人數(shù)。,19.3.3 Command類,示例: static void Main(string args)
13、 string myConStr = Data Source=localhost;Initial Catalog=stuinfo;Persist Security Info=false;User ID=admin;Password=123; SqlConnection myCon = new SqlConnection(myConStr); myCon.Open(); string sql = insert into stutable values(03,王珊,信息工程學院); SqlCommand myCom = new SqlCommand(sql, myCon); myCom.Comma
14、ndType = CommandType.Text; myCom.ExecuteNonQuery(); myCon.Close(); ,19.3.4 DataSet類,DataSet是物理數(shù)據(jù)庫在本地內(nèi)存中的表示形式,通過使用數(shù)據(jù)集可以在無連接的情況下訪問數(shù)據(jù)庫。 DataSet中包含的數(shù)據(jù)對象及其相互間的關(guān)系: 數(shù)據(jù)表(DataTable):數(shù)據(jù)源中的數(shù)據(jù)表在內(nèi)存中的表示。 數(shù)據(jù)列(DataColumn):用于描述DataTable中的列(記錄)。 數(shù)據(jù)行(DataRow):用于描述DataTable中的行(記錄)。 表間關(guān)系(DataRelation):表示不同表中兩列數(shù)據(jù)間的關(guān)系(如主鍵
15、與外鍵)。 約束(Constraint):定義一些在DataTable中添加和操作數(shù)據(jù)要遵守的規(guī)則。,19.3.4 DataSet類,填充數(shù)據(jù)集 調(diào)用DataAdapter對象的Fill方法 示例: using System.Data.SqlClient; private void Form1_Load(object sender, EventArgs e) string Str = Data Source=localhost;Initial Catalog=book;Persist Security Info=false;User ID=admin;Password=123; string
16、Sql = select * from information; SqlConnection sqlcon = new SqlConnection(Str); DataSet Mydata = new DataSet(); SqlDataAdapter Myadapter = new SqlDataAdapter(Sql, sqlcon); Myadapter.Fill(Mydata, information); sqlcon.Close(); ,19.3.4 DataSet類,訪問數(shù)據(jù)集 格式1:數(shù)據(jù)集對象名.Tables數(shù)據(jù)表名.Rowsn列名 格式2:數(shù)據(jù)集對象名.Tables數(shù)據(jù)表名.
17、Rowsn.ItemsArrayk 更新數(shù)據(jù)集:對數(shù)據(jù)集的更新包括向數(shù)據(jù)表中添加一行數(shù)據(jù)、從數(shù)據(jù)表中刪除一行數(shù)據(jù)及修改數(shù)據(jù)表中的某一條記錄的列值。 更新數(shù)據(jù)源 :當更新數(shù)據(jù)集后,可以通過DataAdapter對象的Update()方法同步更新數(shù)據(jù)源。 注意使用Update()方法更新數(shù)據(jù)源之前,需要設(shè)置DataAdapter對象的命令屬性,包括InsertCommand、DeleteCommand和UpdateCommand,有了這些命令屬性,DataAdapter對象的Update()方法才會有效,否則會產(chǎn)生異常。,DataReader類用于從數(shù)據(jù)源中檢索只讀、只進的數(shù)據(jù)流,其最大的特點是D
18、ataReader對象以“基于連接”的方式訪問數(shù)據(jù)庫。 DataReader類的常用方法 : Read、 NextResult、 Close、 GetName 、GetString、 GetValues,19.3.5 DataReade類,示例: static void Main(string args) string Str = Data Source= localhost;Initial Catalog=book;Persist Security Info=false;User ID=admin;Password=123; SqlConnection Con = new SqlConnec
19、tion(Str); string comStr = select 編號,書名 from information; SqlCommand Com = new SqlCommand(comStr, Con); Con.Open(); SqlDataReader rd = Com.ExecuteReader(); do Console.WriteLine(n); Console.WriteLine(t0ttt1, rd.GetName(0), rd.GetName(1); while (rd.Read() Console.WriteLine(t0tt1, rd.GetString(0), rd.G
20、etString(1); while (rd.NextResult(); rd.Close(); Con.Close(); Console.Read(); ,19.3.5 DataReade類,DataAdapter類也稱為數(shù)據(jù)適配器,是DataSet和數(shù)據(jù)源之間檢索和保存數(shù)據(jù)的橋梁,用于處理連接的細節(jié)。DataAdapter既負責從數(shù)據(jù)庫中檢索數(shù)據(jù)并填充數(shù)據(jù)集DataSet,又負責將數(shù)據(jù)集DataSet中對數(shù)據(jù)的更改回送到數(shù)據(jù)庫。 DataAdapter對象包含4個常用屬性,分別為SelectCommand、InsertCommand、UpdateCommand、DeleteCommand。
21、這4個屬性均為Command對象,DataAdapter通過上述4個屬性來對數(shù)據(jù)庫進行查詢、插入、更新和刪除操作。上述4種對象初始值均為null,賦值后才能使用。,19.3.6 DataAdapter類,19.3.6 DataAdapter類,示例: static void Main(string args) string Str = server=SISSQLEXPRESS;Initial Catalog=book;Persist Security Info=False;User ID=admin;Password=123; SqlConnection conn = new SqlConne
22、ction(Str); conn.Open(); string comStr = select * from information; SqlCommand comm = new SqlCommand(comStr, conn); SqlDataAdapter myDA = new SqlDataAdapter(); myDA.SelectCommand = comm; DataSet myDS = new DataSet(); myDA.Fill(myDS, information); comm.CommandText=DELETE FROM information WHERE 編號 = T
23、P0003; myDA.DeleteCommand = comm; myDA.Fill(myDS, information); myDA.Update(myDS, information); conn.Close(); myDS.Dispose(); ,19.3.7 ADO.NET原理剖析,ADO.NET的數(shù)據(jù)訪問策略有兩種,一種是將數(shù)據(jù)記錄緩存于數(shù)據(jù)集(Dataset)中;另一種是直接訪問數(shù)據(jù)庫并使用數(shù)據(jù)讀取器(DataReader)來讀取數(shù)據(jù)記錄。 使用ADO.NET開發(fā)數(shù)據(jù)庫應(yīng)用程序的一般步驟如下。 導入相應(yīng)的命名空間。 選擇使用的數(shù)據(jù)源,即確定將使用的.NET Framework數(shù)據(jù)提
24、供程序。 使用Connection對象建立與數(shù)據(jù)源的連接。 使用Command對象執(zhí)行對數(shù)據(jù)源的操作命令,通常是SQL命令。 使用數(shù)據(jù)集對獲得的數(shù)據(jù)進行操作,需使用DataReader、DataSet等對象。 使用各種數(shù)據(jù)控件向用戶顯示數(shù)據(jù)。,19.4 數(shù)據(jù)控件,19.4.1 常用的數(shù)據(jù)控件 DataSet控件:它是一個集合對象,可以包含任意數(shù)量的表和視圖,還可以包含所有表的約束、索引、關(guān)系及存儲過程等。 BindingSource控件:主要用于連接數(shù)據(jù)庫,通過該控件,可以將所有Windows窗體控件綁定到數(shù)據(jù)源。 BindingNavigator控件:綁定數(shù)據(jù)源后,可以實現(xiàn)數(shù)據(jù)導航。 DataGridView控件:主要用于顯示后臺數(shù)據(jù)庫的數(shù)據(jù),通常以瀏覽表格顯示。,19.4.2 數(shù)據(jù)源控件,BindingSource控件其實并不是真正意義上的數(shù)據(jù)源,而是窗體控件和數(shù)據(jù)源之間的橋梁,其主要功能為將窗體中的控件綁定到數(shù)據(jù)源上。,19.5 數(shù)據(jù)綁定控件,19.5.1 數(shù)據(jù)綁定控件概述 數(shù)據(jù)綁定就是使控件與數(shù)據(jù)源的數(shù)據(jù)綁定在一起,便于數(shù)據(jù)訪問,而控件可以綁定到幾乎所有包含數(shù)據(jù)的結(jié)構(gòu),且可以通過綁定的數(shù)據(jù)設(shè)置控件的任何屬性。數(shù)據(jù)綁定可分為簡單數(shù)據(jù)綁定和復雜數(shù)據(jù)綁定
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國六角彩色鉛筆市場調(diào)查研究報告
- 2025年中國人工智能家系統(tǒng)市場調(diào)查研究報告
- 2025年中國中型客車輪胎市場調(diào)查研究報告
- 2025年中國三爪式電動液壓拉馬市場調(diào)查研究報告
- 2025年中國PU皮革市場調(diào)查研究報告
- 2025年抗重癥肌無力藥項目合作計劃書
- 《合同法》2025個易混淆知識點
- 駕照c考試試題及答案
- 2025租賃合同范本示范文
- 2025年原研藥項目合作計劃書
- 上海市金山區(qū)2025屆高三高考二模地理試卷(含答案)
- 《電氣控制技術(shù)》課件-反接制動控制
- 2024年初級會計實務(wù)考試真題及答案(5套)
- 2024年高考化學真題完全解讀(廣東卷)
- 預防老年人癡呆
- 三年級信息科技第23課《分解描述問題》教學設(shè)計、學習任務(wù)單及課后練習
- 數(shù)據(jù)庫應(yīng)用技術(shù)-第三次形考作業(yè)(第10章~第11章)-國開-參考資料
- 設(shè)備調(diào)試工作流程
- 農(nóng)業(yè)水利工程基礎(chǔ)知識單選題100道及答案
- 2024江蘇南通醋酸纖維有限公司第二批次招聘33人筆試參考題庫附帶答案詳解
- 機器學習與非線性方程-深度研究
評論
0/150
提交評論