在程序中訪問數(shù)據(jù).ppt_第1頁
在程序中訪問數(shù)據(jù).ppt_第2頁
在程序中訪問數(shù)據(jù).ppt_第3頁
在程序中訪問數(shù)據(jù).ppt_第4頁
在程序中訪問數(shù)據(jù).ppt_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rè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中。 在適當(dāng)情況下,可以通過修改緩存行的內(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ù)進(jìn)行訪問和操作的應(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)用于相當(dāng)廣泛的網(wǎng)絡(luò)作業(yè),并且不需要再做COM編排導(dǎo)致的數(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ù)集。可以說,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表示本機(jī)。 Initial Catalog:設(shè)置要連接的數(shù)據(jù)庫名。 Persist Security Info:表示是否保存安全信息。 User ID:設(shè)置數(shù)據(jù)庫訪問者的姓名。 PassWord:設(shè)

9、置數(shù)據(jù)庫訪問者的密碼。 Connection對象的常用方法如下。 Open()方法:建立數(shù)據(jù)庫連接。當(dāng)創(chuàng)建完Connection對象之后,應(yīng)調(diào)用Open()方法才能建立數(shù)據(jù)庫連接。 Close()方法:斷開數(shù)據(jù)庫連接。當(dāng)數(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文本命令,默認(rèn))、StoredProcedure(存儲過程)。 CommandText屬性:當(dāng)CommandType為Text時,CommandText為SQL語句;當(dāng)CommandType為StoredProcedure時,CommandText為存儲過程名

12、稱。 Connection屬性:表示Command類使用的Connection對象。 Parameters屬性:該屬性用于表示與SqlCommand對象相關(guān)聯(lián)的參數(shù)的集合。 Command對象的常用方法如下。 ExecuteReader方法:返回DataReader對象,包含一個或多個行。 ExecuteNonQuery方法:執(zhí)行非查詢的SQL語句并返回受影響的行數(shù)。 ExecuteScalar方法:返回結(jié)果集中第一行的第一列,常用于當(dāng)SQL語句查詢聚合值時,返回聚合值,例如查詢某班的學(xué)生人數(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,王珊,信息工程學(xué)院); 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ù)源 :當(dāng)更新數(shù)據(jù)集后,可以通過DataAdapter對象的Update()方法同步更新數(shù)據(jù)源。 注意使用Update()方法更新數(shù)據(jù)源之前,需要設(shè)置DataAdapter對象的命令屬性,包括InsertCommand、DeleteCommand和UpdateCommand,有了這些命令屬性,DataAdapter對象的Update()方法才會有效,否則會產(chǎn)生異常。,DataReader類用于從數(shù)據(jù)源中檢索只讀、只進(jìn)的數(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ù)的橋梁,用于處理連接的細(xì)節(jié)。DataAdapter既負(fù)責(zé)從數(shù)據(jù)庫中檢索數(shù)據(jù)并填充數(shù)據(jù)集DataSet,又負(fù)責(zé)將數(shù)據(jù)集DataSet中對數(shù)據(jù)的更改回送到數(shù)據(jù)庫。 DataAdapter對象包含4個常用屬性,分別為SelectCommand、InsertCommand、UpdateCommand、DeleteCommand。

21、這4個屬性均為Command對象,DataAdapter通過上述4個屬性來對數(shù)據(jù)庫進(jìn)行查詢、插入、更新和刪除操作。上述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)用程序的一般步驟如下。 導(dǎo)入相應(yīng)的命名空間。 選擇使用的數(shù)據(jù)源,即確定將使用的.NET Framework數(shù)據(jù)提

24、供程序。 使用Connection對象建立與數(shù)據(jù)源的連接。 使用Command對象執(zhí)行對數(shù)據(jù)源的操作命令,通常是SQL命令。 使用數(shù)據(jù)集對獲得的數(shù)據(jù)進(jìn)行操作,需使用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ù)導(dǎo)航。 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ù)綁定和復(fù)雜數(shù)據(jù)綁定

溫馨提示

  • 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

提交評論