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

下載本文檔

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

文檔簡介

第14章數(shù)據(jù)庫應(yīng)用程序設(shè)計(jì)教學(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)ADO.NET概述.NET數(shù)據(jù)提供者DataSet數(shù)據(jù)集使用數(shù)據(jù)庫數(shù)據(jù)綁定

14.1ADO.NET概述

數(shù)據(jù)庫的訪問是所有編程語言中最重要的部分,C#提供了ADO.Net部件用于對數(shù)據(jù)庫進(jìn)行訪問。ADO.NET是美國微軟公司最新推出.NET平臺(tái)中的一種數(shù)據(jù)訪問技術(shù),是專門為.NETFramework而設(shè)計(jì)的,是ADO的升級版本;ADO.NET集成了到.NETFramework中,可用于任何.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對象允許通過組件連接到數(shù)據(jù)庫,在數(shù)據(jù)庫中進(jìn)行檢索、編輯、刪除和插入數(shù)據(jù),并在程序中處理數(shù)據(jù)。ADO.NET支持已連接環(huán)境和非連接環(huán)境(即允許應(yīng)用程序在與數(shù)據(jù)庫斷開的情況下進(jìn)行操作)的數(shù)據(jù)訪問。14.1.1ADO.NET架構(gòu)ADO.NET架構(gòu)的兩個(gè)主要組件:DataProvider(數(shù)據(jù)提供者)DataSet(數(shù)據(jù)集)14.1.2.NETFramework數(shù)據(jù)提供程序

1..NETFramework有四種數(shù)據(jù)提供程序,用于訪問不同類型的數(shù)據(jù)源。SQLServer.NETFramework數(shù)據(jù)提供程序。OLEDB.NETFramework數(shù)據(jù)提供程序。ODBC.NETFramework數(shù)據(jù)提供程序。Oracle.NETFramework數(shù)據(jù)提供程序。14.1.2.NETFramework數(shù)據(jù)提供程序

2..NETDataProvider核心類.NETFramework數(shù)據(jù)提供程序包括四個(gè)核心對象,用于實(shí)現(xiàn)對數(shù)據(jù)庫的數(shù)據(jù)處理。Connection:建立與特定數(shù)據(jù)源的連接Command:用來執(zhí)行對數(shù)據(jù)源進(jìn)行各種操作的SQL命令DataReader:以只能向前的、只讀的數(shù)據(jù)流方式接收Command對象的ExecuteReader方法返回的數(shù)據(jù)。DataAdapter:是DataSet和數(shù)據(jù)源之間交換數(shù)據(jù)的橋梁

若訪問Access數(shù)據(jù)庫,上述4個(gè)對象分別表示為:OleDbConnectionOleDbCommandOleDbDataReaderOleDbDataAdapter

14.1.3DataSet數(shù)據(jù)集

ADO.NET的一個(gè)比較突出的特點(diǎn)是支持離線訪問,即在非連接環(huán)境下對數(shù)據(jù)進(jìn)行處理,DataSet是支持離線訪問的關(guān)鍵對象,它將數(shù)據(jù)存儲(chǔ)在緩存中。DataSet對象不關(guān)心數(shù)據(jù)源的類型,它將信息以表的形式存放。DataSet對象是非連接存儲(chǔ)和處理關(guān)系的基礎(chǔ)。14.2ADO.NET對象ADO.NET類之間的關(guān)系數(shù)據(jù)提供者對象提供者對象就是指在每一個(gè).NET數(shù)據(jù)提供者中定義的對象。

連接對象命令對象CommandBuilder對象DataReader對象DataAdapter對象14.2.1Connection對象

在C#.NET中,通過Connection對象實(shí)現(xiàn)數(shù)據(jù)連接,并且在使用過程中,根據(jù)不同的數(shù)據(jù)庫的類型使用不同的Connection控件。在ADO.NETConnection類中有兩個(gè)子類,一個(gè)是SqlConnection;另一個(gè)是OleDbConnection。

14.2.1Connection對象

在C#.NET中,通過Connection對象實(shí)現(xiàn)數(shù)據(jù)連接,并且在使用過程中,根據(jù)不同的數(shù)據(jù)庫的類型使用不同的Connection控件。在ADO.NETConnection類中有兩個(gè)子類,一個(gè)是SqlConnection;另一個(gè)是OleDbConnection。

14.2.1Connection對象

1.Connection對象常用屬性有:ConnectionString屬性:用來指定要連接的數(shù)據(jù)源。在ConnectionString屬性中,需要使用很多參數(shù)。如:DataSource用來指明數(shù)據(jù)源;InitialCatalog用來指明數(shù)據(jù)庫;IntegratedSecurity用來指明集成安全等。ConnectionTimeout屬性:返回結(jié)果為等待連接打開的時(shí)間(以秒為單位)。默認(rèn)值為15秒。Database屬性:獲取當(dāng)前數(shù)據(jù)庫或連接打開后要使用的數(shù)據(jù)庫的名稱。返回結(jié)果:當(dāng)前數(shù)據(jù)庫的名稱或連接打開后要使用的數(shù)據(jù)庫的名稱。默認(rèn)值為空字符串。DataSource屬性:獲取要連接的數(shù)據(jù)源實(shí)例的名稱。14.2.1Connection對象

2.Connection對象常用方法Connection對象最常用的方法有Open和Close方法。Open()方法:該方法用于打開由ConnectionString屬性指定的數(shù)據(jù)源連接。Close方法():該方法用于斷開由ConnectionString屬性指定的數(shù)據(jù)源連接。14.2.1Connection對象

3.Connection對象的創(chuàng)建

創(chuàng)建一個(gè)SqlConnection對象的編程方法如下:StringconnectionString="DataSource=yangjianjun\SQLExpress;Provide=SQLOLEDB.1;InitialCatalog=Northwind;IntegratedSecurity=True";SqlConnectioncon=newSqlConnection();con.ConnectionString=connectionString;OleDbConnection對象的創(chuàng)建方法和SqlConnection對象的創(chuàng)建方法類似。例如:OleDbConnectioncon=newOleDbConnection();也可以通過控件來創(chuàng)建Connection對象。14.2.2Command對象

通過編程的方法(也可以通過控件來創(chuàng)建)創(chuàng)建一個(gè)Command對象:SqlCommandcmd=newSqlCommand();或OleDbCommandcmd=newOleDbCommand();常用屬性:CommandText:獲取或設(shè)置對數(shù)據(jù)源執(zhí)行的SQL語句,默認(rèn)為空串。CommandTimeout:獲取或設(shè)置在終止執(zhí)行命令的嘗試并生成錯(cuò)誤之前的等待時(shí)間。CommandType:獲取或設(shè)置一個(gè)值,該值指示如何解釋CommandText屬性,默認(rèn)為Text.Connection:獲取或設(shè)置Command對象使用的Connection對象的名稱,默認(rèn)為null。14.2.2Command對象常用方法:ExecuteNonQuery():該方法主要用于執(zhí)行除Select查詢以外(如Update、Insert、Delete)的SQL命令。返回值為該命令所影響的記錄行數(shù)。ExecuteReader():對連接對象執(zhí)行SQL查詢語句,返回一個(gè)DataReader對象。ExecuteScalar():對連接對象執(zhí)行SQL語句,返回結(jié)果值。14.2.3DataReader對象

DataReader對象用于對數(shù)據(jù)庫的操作。在ADO.NETDataReader類中有兩個(gè)子類,一個(gè)是SqlDataReader類;另一個(gè)是OleDbDataReader類。通過編程的方法創(chuàng)建一個(gè)DataReader對象:SqlDataReaderreader=Command.ExecuteReader();或OleDbDataReaderreader=Command.ExecuteReader();

14.3使用數(shù)據(jù)庫在C#代碼中使用ADO.NET的第一步就是引用System.Data命名空間,該命名空間中含有所有的ADO.NET類。接著,需要根據(jù)數(shù)據(jù)源的類型不同,而引用相應(yīng)的數(shù)據(jù)提供者。SQLServer.NET數(shù)據(jù)提供者:SQLServer數(shù)據(jù)庫,使用using指令引用System.Data.SqlClient。Oracle.NET數(shù)據(jù)提供者:Oracle數(shù)據(jù)庫,System.Data.OracleClient;另外,Oracle本身也提供了一個(gè).NET數(shù)據(jù)提供者,Oracle.DataAccess.ClientOLEDB.NET提供者:MicrosoftAccess,System.Data.OleDbODBC.NET數(shù)據(jù)提供者:如果數(shù)據(jù)源沒有內(nèi)置的或OLEDB提供者,則可以使用ODBC.NET數(shù)據(jù)提供者System.Data.Odbc其他內(nèi)置的.NET數(shù)據(jù)提供者:如果數(shù)據(jù)庫有專用的內(nèi)置.NET數(shù)據(jù)提供者,就可以使用它14.3.1使用DataReader

完成數(shù)據(jù)庫訪問

使用DataReader讀取數(shù)據(jù)的過程如下:(1)連接數(shù)據(jù)源;(2)打開連接;(3)執(zhí)行SQL查詢命令。(4)使用DataReader讀取并顯示數(shù)據(jù)。(5)關(guān)閉DataReader和連接。示例:Ex14-1、Ex14-2(控件)、WindowsApplication2:Ex14-4(代碼)數(shù)據(jù)綁定

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

在常用控件中,往往要使用數(shù)據(jù)綁定實(shí)現(xiàn)數(shù)據(jù)庫應(yīng)用程序的開發(fā)。實(shí)現(xiàn)數(shù)據(jù)綁定的一般步驟如下:無論是簡單數(shù)據(jù)綁定,還是復(fù)雜數(shù)據(jù)綁定,要實(shí)現(xiàn)數(shù)據(jù)綁定的第一步就是就是要連接數(shù)據(jù)庫,得到可以操作的DataSet。根據(jù)不同組件,采用不同的數(shù)據(jù)綁定。14.3.2DataGridView控件

DataGridView控件使程序員可在自定義的網(wǎng)格中顯示數(shù)據(jù)。

DataGridView控件主要屬性ReadOnly:該值指示用戶是否可以編輯System.Windows.Forms.DataGridView控件的單元格。DataSource:獲取或設(shè)置System.Windows.Forms.DataGridView所顯示數(shù)據(jù)的數(shù)據(jù)源。DataMember:獲取或設(shè)置數(shù)據(jù)源中System.Windows.Forms.DataGridView顯示其數(shù)據(jù)的列表或表的名稱。CurrentRow:獲取包含當(dāng)前單元格的行。14.3.2DataGridView控件

BindingSource類是和DataGridView控件經(jīng)常配合使用的一個(gè)類。BindingSource類的主要屬性如下:DataSource:獲取或設(shè)置連接器綁定到的數(shù)據(jù)源。返回結(jié)果:作為數(shù)據(jù)源的System.Object。默認(rèn)為null。DataMember:獲取或設(shè)置連接器當(dāng)前綁定到的數(shù)據(jù)源中的特定列表。返回結(jié)果:System.Windows.Forms.BindingSource.DataSource中的列表(或表)的名稱。默認(rèn)值為空字符串。示例:Ex14-3(操作步驟附后)Ex14-3操作步驟:1.創(chuàng)建數(shù)據(jù)源:【數(shù)據(jù)】|【添加數(shù)據(jù)源】…2.添加DataGridView控件,設(shè)置其數(shù)據(jù)源(如果直接選擇表txb,則3、4不可省略);3.添加OleDbDataAdapter控件,生成相應(yīng)的數(shù)據(jù)集;4.將BindingSource對象(默認(rèn)名為testDataSetBindingSource)的DataMember屬性設(shè)為txb;5.運(yùn)行程序。14.3.3DataAdapter對象

DataAdapter是ADO.NET新增加的對象。在ADO.NETDataAdapter類中有兩個(gè)子類,一個(gè)是SqlDataAdapter類;另一個(gè)是OleDbDataAdapter類。DataAdapter對象包含有SelectCommand、InsertCommand、UpdateCommand和DelectCommand四個(gè)屬性,用來定義處理數(shù)據(jù)存儲(chǔ)中數(shù)據(jù)的命令,并且每個(gè)命令都是對Command對象的一個(gè)引用,可以共享同一個(gè)數(shù)據(jù)源。14.3.3DataAdapter對象

DataAdapter對象常用的方法主要有:1.Fill():該方法用于執(zhí)行SelectCommand,用數(shù)據(jù)源的數(shù)據(jù)填充DataSet對象。2.GetData():新建一個(gè)數(shù)據(jù)集中的DataTable并填充它。3.Update():更新數(shù)據(jù)集中的某個(gè)DataTable。通過編程的方法創(chuàng)建一個(gè)DataAdapter對象:SqlDataAdapterdataAdapter=newSqlDataAdapter();或OleDbDataAdapterdataAdapter=newOleDbDataAdapter();14.4數(shù)據(jù)集對象數(shù)據(jù)集對象位于System.Data命名空間中,用于定義ADO.NET的斷開的、客戶端的對象,包括DataSet、DataTable、DataRow、DataColumn和DataRelation等DataSet是數(shù)據(jù)集對象中的首要對象,此對象表示一組相關(guān)表DataTable對象代表DataSet中的一個(gè)表DataTable對象的Rows和Columns分別是DataRow和DataColumn對象,可用于訪問DataTable表中的行和列DataRelation對象代表通過共享列而發(fā)生關(guān)系的兩個(gè)表之間的關(guān)系14.4數(shù)據(jù)集對象

DataSet對象的創(chuàng)建可以通過工具欄中的控件實(shí)現(xiàn);通過菜單“數(shù)據(jù)”|“添加新數(shù)據(jù)源”來實(shí)現(xiàn);或者選擇DataAdapter對象,單擊右上角的黑三角(智能標(biāo)記),在下拉表中選擇“生成數(shù)據(jù)集…”。14.4數(shù)據(jù)集對象填充DataSet對象:DataSet對象是一個(gè)必須填充的容器,填充方法有多種:調(diào)用DataAdapter的Fill方法、手工填充、復(fù)制或合并其它DataSet的數(shù)據(jù)。我們這里介紹使用DataAdapter的Fill方法填充DataSet對象。使用數(shù)據(jù)集對象DataSet是ADO.NET中的核心對象,所有復(fù)雜的操作都是使用它來完成的。DataSet包含一組DataTable對象,表示所操作的數(shù)據(jù)庫表。每個(gè)DataTable對象又都有一些子對象:DataRow和DataColumn,表示數(shù)據(jù)庫表中的行和列。通過這些對象可以獲取表、行和列中的所有元素。為應(yīng)用程序添加數(shù)據(jù)源添加綁定控件將控件與數(shù)據(jù)源綁定的方法就是通過“屬性”窗口,修改控件的“DataSource”屬性14.5修改數(shù)據(jù)庫修改數(shù)據(jù)庫可以使用DataSet來完成,也可以使用編程的方法去完成。14.5修改數(shù)據(jù)庫

1.使用DataSet修改數(shù)據(jù)庫對數(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)化查詢語言SQL(StructuredQueryLanguage,結(jié)構(gòu)化查詢語言)是操作所有關(guān)系型數(shù)據(jù)庫的標(biāo)準(zhǔn)語言。其常用主要命令如下。讀取表格內(nèi)容:SELECT*FROMtableName向表格插入一條記錄:INSERTINTOtable1VALUES(字段值1,字段值2,…)查詢滿足特定條件的記錄:SELECT*FROMtableNameW

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論