




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第14章 數(shù)據(jù)庫應用程序設計教學目標 本章介紹了如何使用C#訪問關系數(shù)據(jù)庫。討論ADO.NET的結構以及如何使應ADO.NET訪問關系數(shù)據(jù)庫,通過本章的學習,讀者應掌握C#的數(shù)據(jù)庫編程,能夠編寫C#程序訪問各種常見的數(shù)據(jù)庫類型 。絕大多數(shù)軟件系統(tǒng)都需要有數(shù)據(jù)庫的支持,因此數(shù)據(jù)庫編程也是每一個開發(fā)者應該掌握的。 教學重點lADO.NET概述l.NET數(shù)據(jù)提供者lDataSet數(shù)據(jù)集l使用數(shù)據(jù)庫l數(shù)據(jù)綁定 14.1 ADO.NET概述概述 數(shù)據(jù)庫的訪問是所有編程語言中最重要的部分,C#提供了ADO.Net部件用于對數(shù)據(jù)庫進行訪問。 1.ADO.NET是美國微軟公司最新推出.NET平臺中的一種數(shù)據(jù)訪
2、問技術,是專門為.NET Framework而設計的,是ADO的升級版本;ADO.NET集成了到.NET Framework中,可用于任何.NET語言,尤其是C#;ADO.NET包括所有的System.Data命名空間及其嵌套的命名空間 。2.ADO.NET是構建.NET數(shù)據(jù)庫應用程序的基礎。3.ADO.NET類庫中提供了用于數(shù)據(jù)連接、處理數(shù)據(jù)操作的類。System.Data名稱空間可以通過數(shù)據(jù)提供者(provider)與數(shù)據(jù)庫通信,ADO.NET對象允許通過組件連接到數(shù)據(jù)庫,在數(shù)據(jù)庫中進行檢索、編輯、刪除和插入數(shù)據(jù),并在程序中處理數(shù)據(jù)。4.ADO.NET支持已連接環(huán)境和非連接環(huán)境(即允許應用
3、程序在與數(shù)據(jù)庫斷開的情況下進行操作)的數(shù)據(jù)訪問。 14.1.1 ADO.NET架構 ADO.NET架構的兩個主要組件:lData Provider(數(shù)據(jù)提供者)lDataSet(數(shù)據(jù)集) 14.1.2 .NET Framework數(shù)據(jù)提供數(shù)據(jù)提供程序程序 1. .NET Framework有四種數(shù)據(jù)提供程序,用于訪問不同類型的數(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 Fr
4、amework數(shù)據(jù)提供數(shù)據(jù)提供程序程序 2. .NET Data Provider核心類核心類.NET Framework數(shù)據(jù)提供程序包括四個核心對象,用于實現(xiàn)對數(shù)據(jù)庫的數(shù)據(jù)處理。Connection:建立與特定數(shù)據(jù)源的連接Command:用來執(zhí)行對數(shù)據(jù)源進行各種操作的SQL命令DataReader:以只能向前的、只讀的數(shù)據(jù)流方式接收Command對象的ExecuteReader方法返回的數(shù)據(jù)。DataAdapter:是DataSet和數(shù)據(jù)源之間交換數(shù)據(jù)的橋梁 若訪問Access數(shù)據(jù)庫,上述4個對象分別表示為:OleDbConnectionOleDbCommandOleDbDataReader
5、OleDbDataAdapter 14.1.3 DataSet數(shù)據(jù)集數(shù)據(jù)集 ADO.NET的一個比較突出的特點是支持離線訪問,即在非連接環(huán)境下對數(shù)據(jù)進行處理,DataSet是支持離線訪問的關鍵對象,它將數(shù)據(jù)存儲在緩存中。DataSet對象不關心數(shù)據(jù)源的類型,它將信息以表的形式存放。DataSet對象是非連接存儲和處理關系的基礎。 14.2 ADO.NET對象 ADO.NET類之間的關系 數(shù)據(jù)提供者對象 提供者對象就是指在每一個.NET數(shù)據(jù)提供者中定義的對象。 l連接對象l命令對象 lCommandBuilder對象 lDataReader對象lDataAdapter對象 14.2.1 Conn
6、ection對象對象 在C#.NET中,通過Connection對象實現(xiàn)數(shù)據(jù)連接,并且在使用過程中,根據(jù)不同的數(shù)據(jù)庫的類型使用不同的Connection控件。在ADO.NET Connection 類中有兩個子類,一個是SqlConnection;另一個是OleDbConnection。 14.2.1 Connection對象對象 在C#.NET中,通過Connection對象實現(xiàn)數(shù)據(jù)連接,并且在使用過程中,根據(jù)不同的數(shù)據(jù)庫的類型使用不同的Connection控件。在ADO.NET Connection 類中有兩個子類,一個是SqlConnection;另一個是OleDbConnection。
7、 14.2.1 Connection對象對象 1.Connection對象常用屬性有:lConnectionString屬性:用來指定要連接的數(shù)據(jù)源。在ConnectionString屬性中,需要使用很多參數(shù)。如:Data Source用來指明數(shù)據(jù)源;Initial Catalog用來指明數(shù)據(jù)庫;Integrated Security用來指明集成安全等。lConnectionTimeout屬性:返回結果為等待連接打開的時間(以秒為單位)。默認值為 15 秒。lDatabase屬性:獲取當前數(shù)據(jù)庫或連接打開后要使用的數(shù)據(jù)庫的名稱。返回結果:當前數(shù)據(jù)庫的名稱或連接打開后要使用的數(shù)據(jù)庫的名稱。默認值
8、為空字符串。lDataSource屬性:獲取要連接的數(shù)據(jù)源實例的名稱。 14.2.1 Connection對象對象 2. Connection對象常用方法對象常用方法 Connection對象最常用的方法有Open和Close方法。lOpen()方法:該方法用于打開由ConnectionString屬性指定的數(shù)據(jù)源連接。lClose方法():該方法用于斷開由ConnectionString屬性指定的數(shù)據(jù)源連接。 14.2.1 Connection對象對象 3. Connection對象的創(chuàng)建對象的創(chuàng)建 創(chuàng)建一個SqlConnection對象的編程方法如下:String connectionSt
9、ring=DataSource=yangjianjunSQLExpress;Provide=SQLOLEDB.1;Initial Catalog=Northwind;Integrated Security=True;SqlConnection con = new SqlConnection();con.ConnectionString = connectionString;OleDbConnection對象的創(chuàng)建方法和SqlConnection對象的創(chuàng)建方法類似。例如:OleDbConnection con = new OleDbConnection ();也可以通過控件來創(chuàng)建也可以通過控件來
10、創(chuàng)建Connection對象對象 。14.2.2 Command對象對象 通過編程的方法(也可以通過控件來創(chuàng)建)創(chuàng)建一個Command對象:SqlCommand cmd = new SqlCommand ();或OleDbCommand cmd = new OleDbCommand();常用屬性:lCommandText:獲取或設置對數(shù)據(jù)源執(zhí)行的SQL語句,默認為空串。lCommandTimeout:獲取或設置在終止執(zhí)行命令的嘗試并生成錯誤之前的等待時間。lCommandType:獲取或設置一個值,該值指示如何解釋CommandText屬性,默認為Text.lConnection:獲取或設置C
11、ommand對象使用的Connection對象的名稱,默認為null。14.2.2 Command對象對象常用方法:lExecuteNonQuery():該方法主要用于執(zhí)行除Select查詢以外(如Update、Insert、Delete)的SQL命令。返回值為該命令所影響的記錄行數(shù)。lExecuteReader():對連接對象執(zhí)行SQL查詢語句,返回一個DataReader對象 。lExecuteScalar():對連接對象執(zhí)行SQL語句,返回結果值。14.2.3 DataReader對象對象 DataReader對象用于對數(shù)據(jù)庫的操作。在ADO.NET DataReader類中有兩個子類,
12、一個是SqlDataReader類;另一個是OleDbDataReader類。 通過編程的方法創(chuàng)建一個DataReader對象:SqlDataReader reader = Command.ExecuteReader();或OleDbDataReader reader = Command.ExecuteReader(); 14.3 使用數(shù)據(jù)庫 在C#代碼中使用ADO.NET的第一步就是引用System.Data命名空間,該命名空間中含有所有的ADO.NET類。接著,需要根據(jù)數(shù)據(jù)源的類型不同,而引用相應的數(shù)據(jù)提供者。lSQL Server .NET數(shù)據(jù)提供者:SQL Server數(shù)據(jù)庫,使用us
13、ing指令引用System.Data.SqlClient。lOracle .NET 數(shù)據(jù)提供者:Oracle數(shù)據(jù)庫,System.Data.OracleClient;另外,Oracle本身也提供了一個.NET 數(shù)據(jù)提供者,Oracle.DataAccess.ClientlOLE DB .NET提供者: Microsoft Access,System.Data.OleDblODBC .NET數(shù)據(jù)提供者:如果數(shù)據(jù)源沒有內置的或OLE DB提供者,則可以使用ODBC.NET數(shù)據(jù)提供者System.Data.Odbcl其他內置的.NET 數(shù)據(jù)提供者:如果數(shù)據(jù)庫有專用的內置.NET 數(shù)據(jù)提供者,就可以使
14、用它14. 3.1 使用DataReader完成數(shù)據(jù)庫訪問完成數(shù)據(jù)庫訪問 使用DataReader讀取數(shù)據(jù)的過程如下:(1)連接數(shù)據(jù)源;(2)打開連接;(3)執(zhí)行SQL查詢命令。(4)使用DataReader讀取并顯示數(shù)據(jù)。(5)關閉DataReader和連接。示例:示例:Ex14-1、 Ex14-2(控件控件)、 WindowsApplication2:Ex14-4(代碼代碼)數(shù)據(jù)綁定數(shù)據(jù)綁定 數(shù)據(jù)綁定就是將一個控件的屬性與一個數(shù)據(jù)源連接起來。大多數(shù)Windows窗體控件的屬性都可以連接或綁定到一個數(shù)據(jù)源。一經綁定,數(shù)據(jù)源中值就會改變綁定的控件的屬性,反之亦然。 Windows窗體控件支持兩
15、種類型的數(shù)據(jù)綁定:簡單綁定和復雜綁定。簡單數(shù)據(jù)綁定允許你將將一個控件或窗體的屬性綁定到數(shù)據(jù)源中的單個值。而復雜數(shù)據(jù)綁定專門用于將一個控件連接到一系列的值。簡單數(shù)據(jù)綁定適合只顯示一個值的控件,如Label 、Text等之類的控件。復雜數(shù)據(jù)綁定適合能顯示多個值的控件,如:ListBox、CheckedListBox、ComboBox、和 DataGridView等。數(shù)據(jù)綁定數(shù)據(jù)綁定 在常用控件中,往往要使用數(shù)據(jù)綁定實現(xiàn)數(shù)據(jù)庫應用程序的開發(fā)。實現(xiàn)數(shù)據(jù)綁定的一般步驟如下:l 無論是簡單數(shù)據(jù)綁定,還是復雜數(shù)據(jù)綁定,要實現(xiàn)數(shù)據(jù)綁定的第一步就是就是要連接數(shù)據(jù)庫,得到可以操作的DataSet。l 根據(jù)不同組件
16、,采用不同的數(shù)據(jù)綁定。 14.3.2 DataGridView控件控件 DataGridView控件使程序員可在自定義的網(wǎng)格中顯示數(shù)據(jù)。 DataGridView控件主要屬性控件主要屬性lReadOnly:該值指示用戶是否可以編輯 System.Windows.Forms.DataGridView 控件的單元格。lDataSource:獲取或設置 System.Windows.Forms.DataGridView 所顯示數(shù)據(jù)的數(shù)據(jù)源。lDataMember:獲取或設置數(shù)據(jù)源中 System.Windows.Forms.DataGridView 顯示其數(shù)據(jù)的列表或表的名稱。lCurrentRow
17、:獲取包含當前單元格的行。14.3.2 DataGridView控件控件 BindingSource類類是和是和DataGridView控件經常配合控件經常配合使用的一個類。使用的一個類。BindingSource類的主要屬性如下:類的主要屬性如下:lDataSource :獲取或設置連接器綁定到的數(shù)據(jù)源。:獲取或設置連接器綁定到的數(shù)據(jù)源。返回結果:作為數(shù)據(jù)源的返回結果:作為數(shù)據(jù)源的 System.Object。默認為。默認為null。lDataMember : 獲取或設置連接器當前綁定到的數(shù)獲取或設置連接器當前綁定到的數(shù)據(jù)源中的特定列表。返回結果:據(jù)源中的特定列表。返回結果: System.
18、Windows.Forms.BindingSource.DataSource 中的列表(或表)的名稱。默認值為空字符串。中的列表(或表)的名稱。默認值為空字符串。示例:示例:Ex14-3(操作步驟附后)(操作步驟附后)Ex14-3操作步驟:操作步驟:1.創(chuàng)建數(shù)據(jù)源:【數(shù)據(jù)】|【添加數(shù)據(jù)源】2.添加DataGridView控件,設置其數(shù)據(jù)源(如果直接選擇表txb,則3、4不可省略);3.添加OleDbDataAdapter控件,生成相應的數(shù)據(jù)集;4.將BindingSource對象(默認名為testDataSetBindingSource)的DataMember屬性設為txb;5.運行程序。14
19、.3.3 DataAdapter對象對象 DataAdapter是ADO.NET新增加的對象。在ADO.NET DataAdapter類中有兩個子類,一個是SqlDataAdapter類;另一個是OleDbDataAdapter類。 DataAdapter對象包含有SelectCommand、InsertCommand、UpdateCommand和DelectCommand四個屬性,用來定義處理數(shù)據(jù)存儲中數(shù)據(jù)的命令,并且每個命令都是對Command對象的一個引用,可以共享同一個數(shù)據(jù)源。 14.3.3 DataAdapter對象對象 DataAdapter對象常用的方法主要有:1.Fill():
20、該方法用于執(zhí)行SelectCommand,用數(shù)據(jù)源的數(shù)據(jù)填充DataSet對象。2.GetData():新建一個數(shù)據(jù)集中的DataTable并填充它。3.Update():更新數(shù)據(jù)集中的某個DataTable。通過編程的方法創(chuàng)建一個DataAdapter對象:SqlDataAdapter dataAdapter = new SqlDataAdapter ();或OleDbDataAdapter dataAdapter = new OleDbDataAdapter (); 14.4 數(shù)據(jù)集對象 數(shù)據(jù)集對象位于System.Data命名空間中,用于定義ADO.NET的斷開的、客戶端的對象,包括Da
21、taSet、DataTable、DataRow、DataColumn和DataRelation等 lDataSet是數(shù)據(jù)集對象中的首要對象,此對象表示一組相關表 lDataTable對象代表DataSet中的一個表 lDataTable對象的Rows和Columns分別是DataRow和DataColumn對象,可用于訪問DataTable表中的行和列 lDataRelation對象代表通過共享列而發(fā)生關系的兩個表之間的關系 14. 4 數(shù)據(jù)集對象 DataSet對象的創(chuàng)建可以通過工具欄中的控件實現(xiàn);通過菜單“數(shù)據(jù)”|“添加新數(shù)據(jù)源”來實現(xiàn);或者選擇DataAdapter對象,單擊右上角的黑三
22、角(智能標記),在下拉表中選擇“生成數(shù)據(jù)集” 。 14. 4 數(shù)據(jù)集對象 填充填充DataSet對象:對象: DataSet對象是一個必須填充的容器,填充方法有多種:調用DataAdapter的Fill方法、手工填充、復制或合并其它DataSet的數(shù)據(jù)。我們這里介紹使用DataAdapter的Fill方法填充DataSet對象。使用數(shù)據(jù)集對象 DataSet是ADO.NET中的核心對象,所有復雜的操作都是使用它來完成的。DataSet包含一組DataTable對象,表示所操作的數(shù)據(jù)庫表。每個DataTable對象又都有一些子對象:DataRow和DataColumn,表示數(shù)據(jù)庫表中的行和列。通
23、過這些對象可以獲取表、行和列中的所有元素。 l為應用程序添加數(shù)據(jù)源l添加綁定控件l將控件與數(shù)據(jù)源綁定的方法就是通過“屬性”窗口,修改控件的“Data Source”屬性14.5 修改數(shù)據(jù)庫 修改數(shù)據(jù)庫可以使用DataSet來完成,也可以使用編程的方法去完成。 14.5 修改數(shù)據(jù)庫 1使用使用DataSet修改數(shù)據(jù)庫修改數(shù)據(jù)庫 對數(shù)據(jù)庫的修改操作可以用相同的模式完成:(1)用數(shù)據(jù)庫中的數(shù)據(jù)填充數(shù)據(jù)集DataSet。(2)修改存儲在DataSet中的數(shù)據(jù),例如,更新、插入和刪除記錄。(3)完成了所有的修改操作后,把DataSet中所作的修改更新到數(shù)據(jù)庫中。14.5 修改數(shù)據(jù)庫 2結構化查詢語言結構化查詢語言SQL(Structured Query Language,結構化查詢語言)是操作所有關系型數(shù)據(jù)庫的標準語言。其常用主要命令如下。讀取表格內容:SELECT * FROM tableName向表格插入一條記錄:INSERT INTO table1 VALUES(字段值1,字段值2,)查詢滿足特定條件的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 44115.3-2025信息技術虛擬現(xiàn)實內容表達第3部分:音頻
- GB/T 31907-2025服裝測量方法
- 2024年投資咨詢的經濟指標解讀:試題及答案
- 動物疫苗研發(fā)前景展望試題及答案
- 保安人員聘請勞動合同
- 合同管理指南:這些內容不可或缺
- Unit 10 單元整體教學設計教學設計 2024-2025學年人教版八年級英語上冊
- 甘肅省武威市涼州區(qū)永昌鎮(zhèn)和寨九年制學校九年級化學上冊 2.1 空氣教學實錄1 (新版)新人教版
- 七年級地理下冊 第八章 東半球其他的地區(qū)和國家8.4 澳大利亞教學實錄 (新版)新人教版
- 夏季八防安全培訓課件
- 港口基礎設施智能化改造與升級
- 川劇講解課件
- 《爭當時代好青年》班會課件
- 國家八年級數(shù)學質量測試題(六套)
- 醫(yī)院院外會診申請單、醫(yī)師外出會診審核表、醫(yī)師外出會診回執(zhí)
- 腦外傷治療中通竅活血湯的應用探究
- 招標代理服務服務方案
- 金屬表面處理中的固體潤滑技術
- 血管性癡呆健康宣教
- 情緒管理完整
- 《市場營銷學》吳建安
評論
0/150
提交評論