第14章數(shù)據(jù)庫應(yīng)用程序設(shè)計(jì)_第1頁
第14章數(shù)據(jù)庫應(yīng)用程序設(shè)計(jì)_第2頁
第14章數(shù)據(jù)庫應(yīng)用程序設(shè)計(jì)_第3頁
第14章數(shù)據(jù)庫應(yīng)用程序設(shè)計(jì)_第4頁
第14章數(shù)據(jù)庫應(yīng)用程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、2022年3月15日第16章 Web服務(wù)創(chuàng)建和使用服務(wù)創(chuàng)建和使用 主講教師: 楊建軍教學(xué)目標(biāo) 本章介紹了如何使用C#訪問關(guān)系數(shù)據(jù)庫。討論ADO.NET的結(jié)構(gòu)以及如何使應(yīng)ADO.NET訪問關(guān)系數(shù)據(jù)庫,通過本章的學(xué)習(xí),讀者應(yīng)掌握C#的數(shù)據(jù)庫編程,能夠編寫C#程序訪問各種常見的數(shù)據(jù)庫類型 。絕大多數(shù)軟件系統(tǒng)都需要有數(shù)據(jù)庫的支持,因此數(shù)據(jù)庫編程也是每一個(gè)開發(fā)者應(yīng)該掌握的。 教學(xué)重點(diǎn)lADO.NET概述l.NET數(shù)據(jù)提供者lDataSet數(shù)據(jù)集l使用數(shù)據(jù)庫l數(shù)據(jù)綁定 14.1 ADO.NET概述概述 ADO.NET是美國(guó)微軟公司最新推出.NET平臺(tái)中的一種數(shù)據(jù)訪問技術(shù),是專門為.NET Framewor

2、k而設(shè)計(jì)的,是ADO的升級(jí)版本;ADO.NET集成了到.NET Framework中,可用于任何.NET語言,尤其是C#;ADO.NET包括所有的System.Data命名空間及其嵌套的命名空間 。ADO.NET將成為構(gòu)建.NET數(shù)據(jù)庫應(yīng)用程序的基礎(chǔ)。 ADO.NET類庫中提供了用于數(shù)據(jù)連接、處理數(shù)據(jù)操作的類。System.Data名稱空間可以通過數(shù)據(jù)提供者(provider)與數(shù)據(jù)庫通信,ADO.NET對(duì)象允許通過組件連接到數(shù)據(jù)庫,在數(shù)據(jù)庫中進(jìn)行檢索、編輯、刪除和插入數(shù)據(jù),并在程序中處理數(shù)據(jù)。ADO.NET支持已連接環(huán)境和非連接環(huán)境的數(shù)據(jù)訪問。 14.1.1 ADO.NET架構(gòu) ADO.NE

3、T架構(gòu)的兩個(gè)主要組件lData Provider(數(shù)據(jù)提供者)lDataSet(數(shù)據(jù)集) 14.1.2 .NET Framework數(shù)據(jù)提供數(shù)據(jù)提供程序程序 1.NET Framework有四種數(shù)據(jù)提供程序有四種數(shù)據(jù)提供程序l.NET Framework有以下四種數(shù)據(jù)提供程序:lSQL Server .NET Framework數(shù)據(jù)提供程序。lOLE DB .NET Framework數(shù)據(jù)提供程序。lODBC .NET Framework數(shù)據(jù)提供程序。lOracle .NET Framework數(shù)據(jù)提供程序。14.1.2 .NET Framework數(shù)據(jù)提供數(shù)據(jù)提供程序程序 2. .NET D

4、ata Provider核心類核心類.NET Framework數(shù)據(jù)提供程序包括四個(gè)核心類,用于實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的數(shù)據(jù)處理。(1) Connection對(duì)象數(shù)據(jù)庫應(yīng)用程序和數(shù)據(jù)庫進(jìn)行交互要在建立數(shù)據(jù)庫連接的基礎(chǔ)上進(jìn)行。Connection對(duì)象成為連接對(duì)象,提供了對(duì)數(shù)據(jù)存儲(chǔ)中正在運(yùn)行的事務(wù)(Transaction)的訪問技術(shù)。(2) Command對(duì)象Command對(duì)象用于執(zhí)行數(shù)據(jù)庫的命令操作,命令操作包括檢索(Select)、插入(Insert)、刪除(Delete)以及更新(Update)操作。 (3) DataAdapter對(duì)象DataAdapter(數(shù)據(jù)適配器)對(duì)象在DataSet對(duì)象和數(shù)據(jù)

5、源之間架起了一座“橋梁”。 DataAdapter可以用數(shù)據(jù)源填充DataSet并解析更新。(4) DataReader對(duì)象數(shù)據(jù)流提供了高性能的、前向的數(shù)據(jù)存取機(jī)制。通過DataReader可以輕松而高效地訪問數(shù)據(jù)流。DataReader對(duì)象用于從數(shù)據(jù)庫中讀取由SELECT命令返回的只讀的數(shù)據(jù)流,在這個(gè)過程中一直保持與數(shù)據(jù)庫的連接。 14.1.3 DataSet數(shù)據(jù)集數(shù)據(jù)集 ADO.NET的一個(gè)比較突出的特點(diǎn)是支持離線訪問,即在非連接環(huán)境下對(duì)數(shù)據(jù)進(jìn)行處理,DataSet是支持離線訪問的關(guān)鍵對(duì)象,它將數(shù)據(jù)存儲(chǔ)在緩存中。DataSet對(duì)象不關(guān)心數(shù)據(jù)源的類型,它將信息以表的形式存放。DataSet對(duì)

6、象是非連接存儲(chǔ)和處理關(guān)系的基礎(chǔ)。 14.1.4 ADO.NET的設(shè)計(jì)目標(biāo) 簡(jiǎn)單地訪問關(guān)系數(shù)據(jù) l 可擴(kuò)展性 ADO.NET具有良好的可擴(kuò)展性 它為.NET數(shù)據(jù)提供者插件提供了框架,這些提供者可用于從任何數(shù)據(jù)源讀寫數(shù)據(jù) l 支持多層應(yīng)用程序 ADO.NET使用開放的XML標(biāo)準(zhǔn)格式在層之間通信,允許數(shù)據(jù)通過Internet防火墻來傳遞,并允許以非Microsoft技術(shù)實(shí)現(xiàn)一層或多層 l 統(tǒng)一XML和關(guān)系數(shù)據(jù)訪問 XML文檔具有分層的數(shù)據(jù)結(jié)構(gòu)。.NET技術(shù)是以XML為基礎(chǔ)構(gòu)建的,ADO.NET可以擴(kuò)展.NET的用法,溝通行、列和XML文檔中的關(guān)系數(shù)據(jù) 14.2 ADO.NET對(duì)象 ADO.NET類之

7、間的關(guān)系 提供者對(duì)象 提供者對(duì)象就是指在每一個(gè).NET數(shù)據(jù)提供者中定義的對(duì)象,其名稱前帶有特定提供者的名稱 l連接對(duì)象 l命令對(duì)象 lCommandBuilder對(duì)象 lDataReader對(duì)象lDataAdapter對(duì)象 14.2.1 Connection對(duì)象對(duì)象 在C#.NET中,通過Connection對(duì)象實(shí)現(xiàn)數(shù)據(jù)連接,并且在使用過程中,根據(jù)不同的數(shù)據(jù)庫的類型使用不同的Connection控件。在ADO.NET Connection 類中有兩個(gè)子類,一個(gè)是SqlConnection;另一個(gè)是OleDbConnection。 14.2.1 Connection對(duì)象對(duì)象 在C#.NET中,通

8、過Connection對(duì)象實(shí)現(xiàn)數(shù)據(jù)連接,并且在使用過程中,根據(jù)不同的數(shù)據(jù)庫的類型使用不同的Connection控件。在ADO.NET Connection 類中有兩個(gè)子類,一個(gè)是SqlConnection;另一個(gè)是OleDbConnection。 14.2.1 Connection對(duì)象對(duì)象 1.Connection對(duì)象常用屬性有:lConnectionString屬性:用來指定要連接的數(shù)據(jù)源。在ConnectionString屬性中,需要使用很多參數(shù)。如:Data Source用來指明數(shù)據(jù)源;Initial Catalog用來指明數(shù)據(jù)庫;Integrated Security用來指明集成安全等

9、。lConnectionTimeout屬性:獲取在嘗試建立連接時(shí)終止嘗試并生成錯(cuò)誤之前所等待的時(shí)間。返回結(jié)果:等待連接打開的時(shí)間(以秒為單位)。默認(rèn)值為 15 秒。lDatabase屬性:獲取當(dāng)前數(shù)據(jù)庫或連接打開后要使用的數(shù)據(jù)庫的名稱。返回結(jié)果:當(dāng)前數(shù)據(jù)庫的名稱或連接打開后要使用的數(shù)據(jù)庫的名稱。默認(rèn)值為空字符串。lDataSource屬性:獲取要連接的數(shù)據(jù)源實(shí)例的名稱。 14.2.1 Connection對(duì)象對(duì)象 2. Connection對(duì)象常用方法對(duì)象常用方法lConnection對(duì)象最常用的方法有Open和Close方法。lOpen()方法:該方法用于打開由ConnectionStrin

10、g屬性指定的數(shù)據(jù)源連接。lClose方法():該方法用于斷開由ConnectionString屬性指定的數(shù)據(jù)源連接。 14.2.1 Connection對(duì)象對(duì)象 3. Connection對(duì)象的創(chuàng)建對(duì)象的創(chuàng)建 創(chuàng)建一個(gè)SqlConnection對(duì)象的方法如下:String connectionString=DataSource=yangjianjunSQLExpress;Provade=SQLOLEDB.1;Initial Catalog=Northwind;Integrated Security=True;SqlConnection con = new SqlConnection();con

11、.ConnectionString = connectionString;OleDbConnection對(duì)象的創(chuàng)建方法和SqlConnection對(duì)象的創(chuàng)建方法類似。例如:OleDbConnection con = new OleDbConnection ();14.2.2 Command對(duì)象對(duì)象 通過編程的方法創(chuàng)建一個(gè)Command對(duì)象:SqlCommand command = new SqlCommand ();或OleDbCommand command = new OleDbCommand();14.2.3 DataAdapter對(duì)象對(duì)象 DataAdapter對(duì)象是ADO.NET新增加

12、。在ADO.NET DataAdapter類中有兩個(gè)子類,一個(gè)是SqlDataAdapter類;另一個(gè)是OleDbDataAdapter類。 DataAdapter對(duì)象包含有SelectCommand、InsertCommand、UpdateCommand和DelectCommand四個(gè)屬性,用來定義處理數(shù)據(jù)存儲(chǔ)中數(shù)據(jù)的命令,并且每個(gè)命令都是對(duì)Command對(duì)象的一個(gè)引用,可以共享同一個(gè)數(shù)據(jù)源。 14.2.3 DataAdapter對(duì)象對(duì)象 通過編程的方法創(chuàng)建一個(gè)DataAdapter對(duì)象:SqlDataAdapter dataAdapter = new SqlDataAdapter ();或

13、OleDbDataAdapter dataAdapter = new OleDbDataAdapter ();。 14.2.4 DataReader對(duì)象對(duì)象 DataReader對(duì)象用于對(duì)數(shù)據(jù)庫的操作。在ADO.NET DataReader類中有兩個(gè)子類,一個(gè)是SqlDataReader類;另一個(gè)是OleDbDataReader類。 通過編程的方法創(chuàng)建一個(gè)DataReader對(duì)象:SqlDataReader reader = command.ExecuteReader();或OleDbDataReader reader = command.ExecuteReader(); 14.2.4 數(shù)據(jù)集

14、對(duì)象 數(shù)據(jù)集對(duì)象位于System.Data命名空間中,用于定義ADO.NET的斷開的、客戶端的對(duì)象,包括DataSet、DataTable、DataRow、DataColumn和DataRelation等 lDataSet是數(shù)據(jù)集對(duì)象中的首要對(duì)象,此對(duì)象表示一組相關(guān)表 lDataTable對(duì)象代表DataSet中的一個(gè)表 lDataTable對(duì)象的Rows和Columns分別是DataRow和DataColumn對(duì)象,可用于訪問DataTable表中的行和列 lDataRelation對(duì)象代表通過共享列而發(fā)生關(guān)系的兩個(gè)表之間的關(guān)系 14.2.4 數(shù)據(jù)集對(duì)象 DataSet對(duì)象的創(chuàng)建可以通過工具

15、欄中的控件實(shí)現(xiàn);通過菜單“數(shù)據(jù)”|“生成數(shù)據(jù)集”來實(shí)現(xiàn);或者選擇DataAdapter對(duì)象,單擊右上角的黑三角(智能標(biāo)記),在下拉表中選擇“生成數(shù)據(jù)集”,這時(shí),會(huì)彈出“生成數(shù)據(jù)集”對(duì)話框。如圖14-15所示。 14.2.4 數(shù)據(jù)集對(duì)象 填充填充DataSet對(duì)象:對(duì)象: DataSet對(duì)象是一個(gè)必須填充的容器,填充方法有多種:調(diào)用DataAdapter的Fill方法、手工填充、復(fù)制或合并其它DataSet的數(shù)據(jù)。我們這里介紹使用DataAdapter的Fill方法填充DataSet對(duì)象。14.3 使用數(shù)據(jù)庫 在C#代碼中使用ADO.NET的第一步就是引用System.Data命名空間,該命名空

16、間中含有所有的ADO.NET類。接著,需要根據(jù)數(shù)據(jù)源的類型不同,而引用相應(yīng)的數(shù)據(jù)提供者。l SQL Server .NET數(shù)據(jù)提供者:SQL Server數(shù)據(jù)庫,使用using指令引用System.Data.SqlClient。l Oracle .NET 數(shù)據(jù)提供者:Oracle數(shù)據(jù)庫,內(nèi)置Oracle .NET驅(qū)動(dòng)程序是最佳選擇,System.Data.OracleClient;另外,Oracle本身也提供了一個(gè).NET 數(shù)據(jù)提供者,Oracle.DataAccess.Clientl OLE DB .NET提供者: Microsoft Access,System.Data.OleDbl OD

17、BC .NET數(shù)據(jù)提供者:如果數(shù)據(jù)源沒有內(nèi)置的或OLE DB提供者,則可以使用ODBC.NET數(shù)據(jù)提供者System.Data.Odbcl 其他內(nèi)置的.NET 數(shù)據(jù)提供者:如果數(shù)據(jù)庫有專用的內(nèi)置.NET 數(shù)據(jù)提供者,就可以使用它14.3.1創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫 創(chuàng)建數(shù)據(jù)庫可以使用Sqlcmd命令來完成。SDK 示例所使用的 SQL Server Express 實(shí)例的名稱是“SQLExpress”。要訪問該數(shù)據(jù)庫,請(qǐng)使用服務(wù)器名稱:(local)SQLExpress。 sqlcmd -S (local)SQLExpress -E -d 為了知道自己計(jì)算機(jī)名稱(local),可以在運(yùn)行sqlcm

18、d命令之前先在命令提示窗口中運(yùn)行一下hostname命令。14.3.2 DataGridView控件控件 DataGridView控件使程序員可在自定義的網(wǎng)格中顯示數(shù)據(jù)。 DataGridView控件主要屬性控件主要屬性lReadOnly:該值指示用戶是否可以編輯 System.Windows.Forms.DataGridView 控件的單元格。lDataSource:獲取或設(shè)置 System.Windows.Forms.DataGridView 所顯示數(shù)據(jù)的數(shù)據(jù)源。lDataMember:獲取或設(shè)置數(shù)據(jù)源中 System.Windows.Forms.DataGridView 顯示其數(shù)據(jù)的列表

19、或表的名稱。lCurrentRow:獲取包含當(dāng)前單元格的行。14.3.2 DataGridView控件控件 BindingSource類是和類是和DataGridView控件經(jīng)常配合控件經(jīng)常配合使用的一個(gè)類。使用的一個(gè)類。BindingSource類的主要屬性如下:類的主要屬性如下:lpublic object DataSource get; set; :獲取或設(shè):獲取或設(shè)置連接器綁定到的數(shù)據(jù)源。返回結(jié)果:作為數(shù)據(jù)源置連接器綁定到的數(shù)據(jù)源。返回結(jié)果:作為數(shù)據(jù)源的的 System.Object。默認(rèn)為。默認(rèn)為null。lpublic string DataMember get; set; : 獲

20、取或獲取或設(shè)置連接器當(dāng)前綁定到的數(shù)據(jù)源中的特定列表。返設(shè)置連接器當(dāng)前綁定到的數(shù)據(jù)源中的特定列表。返回結(jié)果:回結(jié)果: System.Windows.Forms.BindingSource.DataSource 中的列表(或行)的名稱。默認(rèn)值為空字符串。中的列表(或行)的名稱。默認(rèn)值為空字符串。14.3.3使用數(shù)據(jù)窗體向?qū)褂脭?shù)據(jù)窗體向?qū)瓿蓴?shù)據(jù)庫訪問完成數(shù)據(jù)庫訪問 使用數(shù)據(jù)窗體向?qū)?chuàng)建簡(jiǎn)單數(shù)據(jù)庫應(yīng)用程序使用數(shù)據(jù)窗體向?qū)?chuàng)建簡(jiǎn)單數(shù)據(jù)庫應(yīng)用程序是快捷簡(jiǎn)便的途徑,用戶僅需要按向?qū)崾臼强旖莺?jiǎn)便的途徑,用戶僅需要按向?qū)崾净卮鹑舾蓡栴},即可生成一個(gè)具有基本數(shù)據(jù)回答若干問題,即可生成一個(gè)具有基本數(shù)據(jù)庫管理

21、功能的應(yīng)用程序。以創(chuàng)建一個(gè)處理數(shù)庫管理功能的應(yīng)用程序。以創(chuàng)建一個(gè)處理數(shù)據(jù)庫據(jù)庫Noethwind.dbo的數(shù)據(jù)庫應(yīng)用程序了解的數(shù)據(jù)庫應(yīng)用程序了解數(shù)據(jù)庫窗體向?qū)У膭?chuàng)建。數(shù)據(jù)庫窗體向?qū)У膭?chuàng)建。l創(chuàng)建數(shù)據(jù)源創(chuàng)建數(shù)據(jù)源 l預(yù)覽數(shù)據(jù)預(yù)覽數(shù)據(jù) l在應(yīng)用程序中顯示數(shù)據(jù)在應(yīng)用程序中顯示數(shù)據(jù) 14.3.4 使用DataReader完成數(shù)據(jù)庫訪問完成數(shù)據(jù)庫訪問 使用DataReader讀取數(shù)據(jù)的過程如下:(1)連接數(shù)據(jù)源;(2)打開連接;(3)執(zhí)行SQL查詢命令。(4)使用DataReader讀取并顯示數(shù)據(jù)。(5)關(guān)閉DataReader和連接。14.4數(shù)據(jù)綁定數(shù)據(jù)綁定 數(shù)據(jù)綁定就是將一個(gè)控件的屬性與一個(gè)數(shù)據(jù)源連

22、接起來。大多數(shù)Windows窗體控件的屬性都可以連接或綁定到一個(gè)數(shù)據(jù)源。一經(jīng)綁定,數(shù)據(jù)源中值就會(huì)改變綁定的控件的屬性,反之亦然。 Windows窗體控件支持兩種類型的數(shù)據(jù)綁定:簡(jiǎn)單綁定和復(fù)雜綁定。簡(jiǎn)單數(shù)據(jù)綁定允許你將將一個(gè)控件或窗體的屬性綁定到數(shù)據(jù)源中的單個(gè)值。而復(fù)雜數(shù)據(jù)綁定專門用于將一個(gè)控件連接到一系列的值。簡(jiǎn)單數(shù)據(jù)綁定適合只顯示一個(gè)值的控件,如Label 、Text等之類的控件。復(fù)雜數(shù)據(jù)綁定適合能顯示多個(gè)值的控件,如:ListBox、CheckedListBox、ComboBox、和 DataGridView等。14.4數(shù)據(jù)綁定數(shù)據(jù)綁定 在常用控件中,往往要使用數(shù)據(jù)綁定實(shí)現(xiàn)數(shù)據(jù)庫應(yīng)用程序的

23、開發(fā)。實(shí)現(xiàn)數(shù)據(jù)綁定的一般步驟如下:l 無論是簡(jiǎn)單數(shù)據(jù)綁定,還是復(fù)雜數(shù)據(jù)綁定,要實(shí)現(xiàn)數(shù)據(jù)綁定的第一步就是就是要連接數(shù)據(jù)庫,得到可以操作的DataSet。l 根據(jù)不同組件,采用不同的數(shù)據(jù)綁定。 使用數(shù)據(jù)集對(duì)象 DataSet是ADO.NET中的核心對(duì)象,所有復(fù)雜的操作都是使用它來完成的。DataSet包含一組DataTable對(duì)象,表示所操作的數(shù)據(jù)庫表。每個(gè)DataTable對(duì)象又都有一些子對(duì)象:DataRow和DataColumn,表示數(shù)據(jù)庫表中的行和列。通過這些對(duì)象可以獲取表、行和列中的所有元素。 l為應(yīng)用程序添加數(shù)據(jù)源l添加綁定控件l將控件與數(shù)據(jù)源綁定的方法就是通過“屬性”窗口,修改控件的“

24、Data Source”屬性14.5 修改數(shù)據(jù)庫 修改數(shù)據(jù)庫可以使用DataSet來完成,也可以使用編程的方法去完成。 14.5 修改數(shù)據(jù)庫 1使用使用DataSet修改數(shù)據(jù)庫修改數(shù)據(jù)庫 對(duì)數(shù)據(jù)庫的修改操作可以用相同的模式完成:(1)用數(shù)據(jù)庫中要使用的數(shù)據(jù)填充數(shù)據(jù)集DataSet。(2)修改存儲(chǔ)在DataSet中的數(shù)據(jù),例如,更新、插入和刪除記錄。(3)完成了所有的修改操作后,把DataSet中所作的修改更新到數(shù)據(jù)庫中。14.5 修改數(shù)據(jù)庫 2結(jié)構(gòu)化查詢語言結(jié)構(gòu)化查詢語言SQL(Structured Query Language,結(jié)構(gòu)化查詢語言)是操作所有關(guān)系型數(shù)據(jù)庫的標(biāo)準(zhǔn)語言。其常用主要命令如下。讀取表格內(nèi)容:SELECT

溫馨提示

  • 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論