第5章 數(shù)據(jù)庫操作_第1頁
第5章 數(shù)據(jù)庫操作_第2頁
第5章 數(shù)據(jù)庫操作_第3頁
第5章 數(shù)據(jù)庫操作_第4頁
第5章 數(shù)據(jù)庫操作_第5頁
已閱讀5頁,還剩113頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、本章知識結(jié)構(gòu)框圖,數(shù)據(jù)庫操作概述,數(shù)據(jù)庫的 連接,連線式數(shù)據(jù)庫操作,離線式數(shù)據(jù)庫操作,外基本定義 1個對象 3種數(shù)據(jù)庫 連接實例,定義與功能 3個對象 5個步驟 1個實例,定義與功能 2個對象 5個步驟 1個實例,基本定義 1個類庫 5個對象,學(xué)習(xí)激勵與案例導(dǎo)航,網(wǎng)易公司首席架構(gòu)設(shè)計師丁磊,丁磊,網(wǎng)易公司首席架構(gòu)設(shè)計師,1971年生于 浙江寧波。2007福布斯中國富豪榜排名第63位,資 產(chǎn)75億元。1997年6月創(chuàng)立網(wǎng)易公司。丁磊將網(wǎng)易 公司從一個10幾個人的私企發(fā)展到今天擁有超過 1500多名員工,在美國公開上市的知名互聯(lián)網(wǎng)技 術(shù)企業(yè)。據(jù)易觀國際數(shù)據(jù)統(tǒng)計網(wǎng)易在中國網(wǎng)游市 場份額中排名第二。,

2、第5章 數(shù)據(jù)庫操作,5.1 ASP.NET 數(shù)據(jù)庫操作概述,5.2 數(shù)據(jù)庫的連接,5.3 連線式操作數(shù)據(jù)庫,5.4 數(shù)據(jù)庫的離線操作,第5章 數(shù)據(jù)庫操作,5.1 ASP.NET 數(shù)據(jù)庫操作概述,5.2 數(shù)據(jù)庫的連接,5.3 連線式操作數(shù)據(jù)庫,5.4 數(shù)據(jù)庫的離線操作,5.1.1 數(shù)據(jù)庫概述,常用的數(shù)據(jù)庫管理系統(tǒng),Oracle,Sybase,Informix,Microsoft SQL Server,Visual FoxPro,Microsoft Access,最常用的以Microsoft SQL Server為主,5.1.2 ADO.NET(Active Data Object ),ADO.N

3、ET共有5個常用對象,它們是Connection、Command、DataReader、DataSet、 和DataAdapter,如表5-1所示。,表5-1 ADO.NET常用對象,5.1.3 ADO.NET中的各類數(shù)據(jù)庫接口,SQL Server.NET,用來訪問SQL Server 7以及更高級版本,ADO.NET 提供了 四種數(shù) 據(jù)驅(qū)動 程序,OkeD.NET,用來訪問包括SQL以及其他類型的數(shù)據(jù)庫,Oracle Db.NET,專門訪問Oracle 8iDataReader及以上版本 的數(shù)據(jù)庫,,ODBC.NET,用來訪問ODBC數(shù)據(jù)源,第5章 數(shù)據(jù)庫操作,5.1 ASP.NET 數(shù)據(jù)

4、庫操作概述,5.2 數(shù)據(jù)庫的連接,5.3 連線式操作數(shù)據(jù)庫,5.4 數(shù)據(jù)庫的離線操作,6.2.1 數(shù)據(jù)庫連接概述,數(shù)據(jù)庫連接并不復(fù)雜,只要執(zhí)行下列步驟即可完成。,1引入命名空間,各種數(shù)據(jù)庫的命名空間各不相同。,如果使用的是SQL Server數(shù)據(jù)庫,則在編寫的程序頭部寫下如下代碼:using System.Data.SqlClient;,一,如果使用的是Access數(shù)據(jù)庫,則在編寫的程序頭部寫下如下代碼:using System.Data.OleDb;,二,如果使用的是Oracle數(shù)據(jù)庫,則在編寫的程序頭部寫下如下代碼:using System.Data.OracleClient。,三,2對C

5、onnection對象實例化,SQL Server 數(shù)據(jù)庫,SqlConnection sqlconstr = new SqlConnection();,ACCESS數(shù)據(jù)庫,OleDbConnection oledbconnstr = new OleDbConnection();,Oralce數(shù)據(jù)庫,OleDbConnection Oracleconnstr = new OracleConnection();,其中斜體部分由編程者自行命名,但成熟的程序員多命名為:sqlconstr,即 sql(SQL 數(shù)據(jù)庫)與connection(連接)及string(字符串)三個單詞的縮寫,合 起來意為S

6、QL 數(shù)據(jù)庫連接字符串。,對象實例化:初學(xué)者往往不理解什么是對象實例化,我們知道,在C語言中使用變量要先聲明,讓計算機知道這是一個變量。同樣在使用對象的時候也要先聲明,告訴計算機sqlconstr是代表數(shù)據(jù)庫連接的一個特殊“變量”。,3設(shè)置連接語句,(1)SQL Server 數(shù)據(jù)庫:,(2)ACCESS數(shù)據(jù)庫:,(3)Oracle數(shù)據(jù)庫:,sqlconstr.ConnectionString = server =localhost; database =test;uid=sa;pwd =,也可以用sqlconstr.ConnectionString = Data Source=localho

7、st;Initial Catalog=test;User ID=sa;Password=;,3設(shè)置連接語句,(1)SQL Server 數(shù)據(jù)庫:,(2)ACCESS數(shù)據(jù)庫:,(3)Oracle數(shù)據(jù)庫:,oledbconnstr.ConnectionString = provider = Microsoft.Jet.OLEDB.4.0;data source =c:lxtest.mdb;,3設(shè)置連接語句,(1)SQL Server 數(shù)據(jù)庫:,(2)ACCESS數(shù)據(jù)庫:,(3)Oracle數(shù)據(jù)庫:,Oracleconnstr.ConnectionString = server=MyOraServe

8、r; Provider=MSDAORA; user id=sa;password=”。,3設(shè)置連接語句,(1)SQL Server 數(shù)據(jù)庫:,(2)ACCESS數(shù)據(jù)庫:,(3)Oracle數(shù)據(jù)庫:,4. 打開連接,表5-2 Connection對象常用屬性及方法,5.2.2連接到Access數(shù)據(jù)庫,Access數(shù)據(jù)庫的連接字符串的屬性如表5-3所示。,表 5-3 OLEDB.NET數(shù)據(jù)庫連接字符串屬性,5.2.3 連接到SQL Server數(shù)據(jù)庫,連接SQL Server數(shù)據(jù)庫的字符串相關(guān)屬性如表5.4所示。 表5-4 SQL Server數(shù)據(jù)庫連接字符串常用屬性,5.2.4連接到Oracle

9、數(shù)據(jù)庫,Oracle數(shù)據(jù)庫的連接字符串相關(guān)屬性如表6-5所示。 表5-5 Oracle數(shù)據(jù)庫連接字符串常用屬性,5.2.5 數(shù)據(jù)庫連接實例,(1)啟動Visual Studio 2008,在菜單依次單擊【文件】【新建】【網(wǎng)站】 【ASP.NET 網(wǎng)站】; (2)在設(shè)計窗口頁面上點右鍵,選擇查看代碼; (3)在Page_load事件輸入表5-6代碼;,表5-6 使用Connection對象連接數(shù)據(jù)庫代碼及解釋,(4)按下CTRL+F5運行程序,得到如下程序界面:,圖 6-1 數(shù)據(jù)庫連接實例,第5章 數(shù)據(jù)庫操作,5.1 ASP.NET 數(shù)據(jù)庫操作概述,5.2 數(shù)據(jù)庫的連接,5.3 連線式操作數(shù)據(jù)庫

10、,5.4 數(shù)據(jù)庫的離線操作,5.3.1 連線式操作數(shù)據(jù)庫概述,那就是它能夠高效快速的訪問數(shù)據(jù)庫。,Connection,Command,+,連線式數(shù)據(jù)庫 三個對象,+,DataReader,5.3.2 連線式操作數(shù)據(jù)庫的流程,5.3.3 連線式所使用的Command對象詳解,使用Command對象執(zhí)行SQL語句,并返回相應(yīng)的結(jié)果。,使用Command對象執(zhí)行存儲過程。,(1),(2),表5-7給出了Command對象常用屬性及方法。,表5-7 Command對象常用屬性及方法, 創(chuàng)建Command對象,以下語句給出了兩種創(chuàng)建Command 對象的方式。,/第一種方式 SqlCom

11、mand myCommand = new SqlCommand(); /第二種方式 SqlCommand catCMD = new SqlCommand(SELECT CategoryID, CategoryName FROM Categories, nwindConn);, 使用Command對象,使用Command對象操作數(shù)據(jù)庫的方法主要有以下四種:,1讀取整個數(shù)據(jù)表,2執(zhí)行SQL命令,3調(diào)用存儲過程,4返回單一結(jié)果,1讀取整個數(shù)據(jù)表,表5-8是通過ExecuteReader方法執(zhí)行讀取整個數(shù)據(jù)表,并綁定GridView控件的 應(yīng)用案例,運用到了Command對象的Execu

12、teReader方法,操作步驟如下:,啟動Visual Studio 2008,在菜單上依次單擊【 文件】【新建】【網(wǎng)站】【ASP.NET 網(wǎng)站】;,在工具箱上拖曳或雙擊DataView圖標(biāo)至設(shè)計 窗口;,在設(shè)計窗口頁面上點右鍵,選擇查看代碼, 在Page_load事件輸入表5-8代碼;,表5-8 讀取整個數(shù)據(jù)表程序代碼及解釋,(4)按下CTRL+F5運行程序,得到如下程序界面:,圖6-8 讀取數(shù)據(jù)表實例,2執(zhí)行SQL命令,表5-9是通過ExecuteNonQuery 將一條記錄插入數(shù)據(jù)庫,并更新到GridView控件 的應(yīng)用案例,運用到了Command對象的ExecuteNonQuery方法

13、,操作步驟如下:,(1)啟動Visual Studio 2008,在菜單依次單擊【文件】【新建】【網(wǎng)站】 【ASP.NET網(wǎng)站】; (2)在工具箱上拖曳或雙擊DataView圖標(biāo),4個標(biāo)簽Label1、Label2、Label3、 Label4,并將相應(yīng)的Text屬性修改為:編號、書名、作者、單價,4個文 本框TextBox1、TextBox2、TextBox3、TextBox4,2個按鈕Button1和 Button2至 設(shè)計窗口;設(shè)計窗口如圖5-9所示:,圖6-9執(zhí)行SQL命令實例設(shè)計,(3)雙擊按鈕Button1,編寫代碼如表5-9所示;,表5-9 執(zhí)行SQL命令程序代碼及解釋,(4)按

14、下CTRL+F5運行程序,得到如下程序界面:,圖6-9 執(zhí)行SQL命令實例,3調(diào)用存儲過程。,表5-10是調(diào)用帶參數(shù)的存儲過程查詢數(shù)據(jù)庫,并更新到GridView控件的應(yīng)用案例, 綜合運用了Command對象的各種屬性和方法,操作步驟如下:,在工具箱上拖曳或雙擊DataView圖標(biāo)至設(shè)計窗口;,啟動Visual Studio 2008,在菜單依次單擊【文件】【新建】【網(wǎng)站】【ASP.NET 網(wǎng)站】;,在設(shè)計窗口頁面上點右鍵,選擇查看代碼,在Page_load事件輸入表6-10代碼;,(1),(2),(3),表5-10調(diào)用存儲過程程序代碼及解釋,(4)按下CTRL+F5運行程序,得到如下程序界面

15、:,圖6-10 調(diào)用存儲過程實例,4返回單一結(jié)果。,表5-11是使用Count函數(shù)來返回表中的記錄數(shù)的應(yīng)用案例,運用了Command對象的 ExecuteScalar方法,操作步驟如下: (1)啟動Visual Studio 2008,在菜單依次單擊【文件】【新建】【網(wǎng)站】 【ASP.NET 網(wǎng)站】; (2)在設(shè)計窗口頁面上點右鍵,選擇查看代碼,在Page_load事件輸入表5-11代碼;,表5-11 返回單一結(jié)果程序代碼及解釋,(3)按下CTRL+F5運行程序,得到如下程序界面:,圖6-11 返回單一結(jié)果實例,5.3.4 連線方式所使用的DataReader對象詳解,DataReader對象

16、提供的屬性以及方法見表5-12所示。 表5-12 DataReader對象常用屬性及方法, 創(chuàng)建DataReader對象,創(chuàng)建DataReadef對象只能通過Command對象的ExecuteReader方法進行創(chuàng)建,而 不能像其他的類那樣直接使用New關(guān)鍵字創(chuàng)建。 以下語句創(chuàng)建了一個SqlDataReader對象:,SqlDataReader myReader = myCommand.ExecuteReader();, 使用DataReader對象,DataReader訪問其本機數(shù)據(jù)類型,使用DataReader對象的Read方法可從查詢結(jié)果中獲取行數(shù)據(jù)。根據(jù)獲取

17、數(shù)據(jù)方法的 不同,該操作可以分為以下四種:,1.使用類型訪問數(shù)據(jù)列,DataReader對象可以使用不同類型數(shù)據(jù)的方法查詢返回行的每一列。具體語句如下:,while (myReader.Read() Response.Write (ID:+myReader.GetInt32(0) + , +書名: + myReader.GetString(1)+); myReader.Close();,應(yīng)用提醒:使用DataReader對象時盡量使用和數(shù)據(jù)庫字段類型匹配的方法來取得相應(yīng)的值,比如對于整形的字段使用GetInt32,對字符類型的字段使用GetString。,2.使用索引訪問數(shù)據(jù)列,DataRea

18、der對象可以直接使用列的索引查詢返回行的每一列。具體語句如下:,3使用列名訪問數(shù)據(jù)列,DataReader對象還可以直接使用列的名稱查詢返回行的每一列。具體語句如下:,while (myReader.Read() Response.Write(ID:+myReader“id” + , +書名: + myReader“Title”+);myReader.Close();,4訪問數(shù)據(jù)列的名稱和屬性,DataReader對象進一步提供了GetName和GetDataTypeName方法獲取返回行 每一列的列名和數(shù)據(jù)類型。具體語句如下:,Response.Write (myReader.GetNam

19、e(i), myReader.GetDataTypeName (i);,表6-13是過Command對象執(zhí)行查詢命令,通過DataReader對象讀取全部 數(shù)據(jù),最后將結(jié)果更新到GridView控件的應(yīng)用案例,綜合運用了 Command 對象和DataReader對象的各種屬性和方法,操作步驟 如下:,(1)啟動Visual Studio 2008,在菜單上依次單擊【文件】【新建】【網(wǎng)站】 【ASP.NET 網(wǎng)站】; (2)在設(shè)計窗口頁面上點右鍵,選擇查看代碼,在Page_load事件輸入表6-13代碼;,表6-13 通過DataReader讀取數(shù)據(jù)程序代碼及解釋,應(yīng)用提醒:在同一時間內(nèi),一個

20、Connection對象只能打開一個DataReader對象。在該DataReader對象關(guān)閉之前,無法打開其他DataReader對象,直到該DataReader對象調(diào)用Close方法為止。 因此,應(yīng)該盡早的關(guān)閉DataReader對象。,(3)按下CTRL+F5運行程序,得到如下程序界面:,圖6-13使用DataReader對象讀取數(shù)據(jù)實例,6.3.5 連線方式實例,表6-13是使用連線式數(shù)據(jù)庫操作的應(yīng)用案例,具體操作步驟如下:,(1)啟動Visual Studio 2008,在菜單依次單擊【文件】【新建】【網(wǎng)站】【ASP.NET 網(wǎng)站】; (2)在工具箱上拖曳一個Table,將Table

21、中放入1個GridView、1個CheckBox,3個按鈕,分別將CheckBox和3個按鈕的Text屬性修改為全選、全刪、取消和添加。右鍵點擊GridView,選擇顯示智能標(biāo)記,將GridView的數(shù)據(jù)列分別綁定id、Title、Author和UnitPrice,并將HeaderText屬性修改為:編號、書名、作者、單價;添加2個CommandField,并分別將ShowEditButton、和ShowDeleteButton屬性選擇為True;添加1個TemplateField,將里面放入一個CheckBox。在工具箱上拖曳一個Table,將Table中放入4個標(biāo)簽label1-label

22、4,4個文本框textbox1-textbox4,2個按鈕Button1和Button2至設(shè)計窗口。將label1-label4相應(yīng)的Text屬性修改為編號、書名、作者、單價,Button1和Button2的Text屬性修改為確定和取消;設(shè)計窗口如圖6-14所示:,圖6-14 連線式數(shù)據(jù)庫操作實例設(shè)計,(3)在設(shè)計窗口頁面上點右鍵,選擇查看代碼,在Page_load事件輸入表6-14 代碼,并創(chuàng)建函數(shù)BindData讀取整張數(shù)據(jù)表和綁定GridView;,表6-14 讀取整張表程序代碼及解釋,4)雙擊GridView的RowEditing、RowCancelingEdit 和RowUpdati

23、ng事件, 輸入表6-15代碼;,表6-15 修改數(shù)據(jù)行程序代碼及解釋,(5)雙擊添加按鈕(Button5)、確定按鈕(Button1)和取消按鈕(Button2), 分別輸入表6-16代碼;,表6-16添加數(shù)據(jù)行程序代碼及解釋,(6)雙擊GridView的RowDeleting事件,輸入表5-17代碼;,表6-17 刪除數(shù)據(jù)行程序代碼及解釋,(7)按下CTRL+F5運行程序,得到如下程序界面:,第6章 數(shù)據(jù)庫操作,6.1 ASP.NET 數(shù)據(jù)庫操作概述,6.2 數(shù)據(jù)庫的連接,6.3 連線式操作數(shù)據(jù)庫,6.4 數(shù)據(jù)庫的離線操作,Connection,DataAdapter,DataSet,離線

24、式數(shù)據(jù)庫包括三個對象,6.4.1 離線方式操作數(shù)據(jù)庫概述,6.4.2 離線方式操作數(shù)據(jù)庫的流程,6.4.3 離線方式所使用的DataAdapter對象詳解,DataAdapter對象在ADO.NET中扮演著數(shù)據(jù)庫和DataSet之間橋梁的角色。 DataAdapter對象通過Fill方法將數(shù)據(jù)填充到DataSet中,當(dāng)完成對數(shù)據(jù)的添加、 刪除或者修改等操作后通過Update方法更新數(shù)據(jù)庫中的數(shù)據(jù)。,應(yīng)用提醒:DataAdapter對象和DataSet對象之間沒有直接的數(shù)據(jù)庫連接。當(dāng)通過DataAdpater對象Fill方法完成DataSet 填充后,兩者之間就沒有連接了。當(dāng)進行更新、刪除等操作

25、時,DataAdpater會自動建立連接,完成操作后再關(guān)閉連接。,DataAdapter對象和數(shù)據(jù)庫以及DataSet對象之間的關(guān)系如圖5-19所示。,圖6-19 DataAdapter對象和數(shù)據(jù)庫以及DataSet對象關(guān)系圖,DataAdapter對象常用的屬性和方法見表6-20,表6-20 DataAdapter對象常用的屬性和方法, 創(chuàng)建DataAdapter對象,以下語句給出了四種創(chuàng)建DataAdapter對象的方式:,/第一種方式 SqlDataAdapter myadapter = new SqlDataAdapter(); myadapter.SelectComma

26、nd = cmd; /第二種方式 SqlDataAdapter myadapter = new SqlDataAdapter(cmd); /第三種方式 SqlDataAdapter myadapter = new SqlDataAdapter(strSQL , cn); /第四種方式 SqlDataAdapter myadapter =new SqlDataAdapter(strSQL, strConn);, 使用DataAdapter對象,DataSet對象,數(shù)據(jù)庫,+,DataAdapter對象 對數(shù)據(jù)庫的操作主 要分為針對,填充dataset,表6-19是使用DataAda

27、pter對象填充DataSet,并綁定GridView控件的應(yīng)用案例, 運用到了DataAdapter對象的Fill方法,操作步驟如下:,啟動Visual Studio 2008,在菜單依次單擊【文件】 【新建】【網(wǎng)站】【ASP.NET 網(wǎng)站】;,在工具箱上拖曳或雙擊DataView至設(shè)計窗口;,在設(shè)計窗口頁面上點右鍵,選擇查看代碼, 在Page_load事件輸入表6-21代碼;,表6-21 使用DataAdapter填充DataSet程序代碼及解釋,(4)按下CTRL+F5運行程序,得到如下程序界面:,圖6-21 使用DataAdapter對象讀取數(shù)據(jù)實例,應(yīng)用提醒:使用DataAdapte

28、r對象時,不需要使用Connection 對象的Open方法,因為DataAdapter對象會自動連接數(shù)據(jù)庫,提交查詢,并關(guān)閉連接。如果已經(jīng)打開數(shù)據(jù)庫連接,則DataAdapter對象不會影響連接狀態(tài)。,2更新數(shù)據(jù)庫。,DataAdapter對象使用Update方法,(1)指定更改的DataSet對象,(2)指定更改的DataSet 和 DataTable 對象,(3)指定更改的DataTable,(4)指定更改的DataRow,DataAdapter對象調(diào)用Update方法時,它將根據(jù)每個記錄的狀態(tài)執(zhí)行相應(yīng)的SQL語句。由于DataTable中的DataRow對象能夠記錄每個記錄的狀態(tài),Da

29、taAdapter對象將分析DataTable的分析每個記錄,判斷該記錄是否更改。如果該記錄已更改,則它將根據(jù)更改的內(nèi)容使用InsertCommand、UpdateCommand或 DeleteCommand產(chǎn)生相應(yīng)的SQL語句,并更新到數(shù)據(jù)庫。值得注意的是,在使用Update方法之前,必須設(shè)置相應(yīng)的更新命令。 在程序6-09.aspx中,演示了如何設(shè)置DataAdapter的UpdateCommand來執(zhí)行對已修改行的更新。,表6-20是設(shè)置DataAdapter的UpdateCommand來執(zhí)行對已修改行的更新,并綁 定GridView控件的應(yīng)用案例,運用到了DataAdapter對象的U

30、pdate方法,操作步驟 如下:,(1)啟動Visual Studio 2008,在菜單依次單擊【文件】【新建】【網(wǎng)站】【ASP.NET 網(wǎng)站】; (2)在工具箱上拖曳或雙擊DataView至設(shè)計窗口; (3)在工具箱上拖曳1個GridView。右鍵點擊GridView,選擇顯示智能標(biāo)記,將GridView的數(shù)據(jù)列分別綁定id、Title、Author和UnitPrice,并將HeaderText屬性修改為:編號、書名、作者、單價;添加2個CommandField,并分別將ShowEditButton設(shè)置為True。在工具箱上拖曳一個Table,將Table中放入4個標(biāo)簽label1-labe

31、l4,4個文本框textbox1-textbox4,2個按鈕Button1和Button2至設(shè)計窗口。將label1-label4相應(yīng)的Text屬性修改為編號、書名、作者、單價,Button1和Button2的Text屬性修改為確定和取消;設(shè)計窗口如圖6-22所示:,圖6-22 使用DataAdapter對象更新數(shù)據(jù)實例設(shè)計,(4)雙擊Button1,輸入表6-22代碼: 表6-22 更新數(shù)據(jù)庫程序代碼及解釋,應(yīng)用提醒:InsertCommand、UpdateCommand或 DeleteCommand產(chǎn)生相應(yīng)的SQL語句中的where子句的參數(shù)設(shè)置需為DataTable對象原有列的屬性值。這

32、是因為進行更新時可能修改了DataTable對象列的屬性值,從而可能出現(xiàn)數(shù)據(jù)不匹配的現(xiàn)象。,(4)按下CTRL+F5運行程序,得到如下程序界面:,圖6-22使用DataAdapter對象更新數(shù)據(jù)實例,6.4.4離線方式所使用的DataSet對象詳解,DataTableCollection對象,是表示DataSet對象中數(shù)據(jù)表的Data Table對象的集合。它可以包含一個 DataTable對象也可以包含多個DataT able對象。,DataSet 對象 組成,DataRelationCollection組成,是表示DataSet對象中數(shù)據(jù)表之間的 關(guān)系DataRelation的集合。,Da

33、taSet對象具有豐富的結(jié)構(gòu),可以包括多個數(shù)據(jù)表表、關(guān)系、約束等。 圖6-23是 DataSet 對象模型。,DataSet對象常用的屬性和方法見表6-24。 表6-24 DataSet對象常用的屬性和方法, 創(chuàng)建DataSet對象,以下語句給出了兩種創(chuàng)建DataSet對象的方式。,第一種方式:Dataset ds = new Dataset (); 第二種方式:Dataset ds = new Dataset (“Customers”);, 使用DataSet對象,DataSet對象的操作可以劃分為以下四種,1.針對DataTable對象的操作,2.針對DataR

34、ow對象的操作,3.針對DataRelation對象的操作,4.針對DataView對象的操作,1.針對DataTable對象的操作,創(chuàng)建DataTale對象的方法可以分為兩種:,以下語句給出了創(chuàng)建DataTale對象的兩種方式。,第一種方式:DataTable tbCustomers=new DataTable(Customers); 第二種方式:DataSet dsNorthwind=new DataSet(Northwind);,創(chuàng)建DataTable對象的結(jié)構(gòu)包括兩種方式:,如下語句演示了如何使用DataColumn對象定義DataTable對象的結(jié)構(gòu)。,DataTable dtCus

35、tomers =new DataTable(Customers); DataColumn col1; Col1=new DataColumn(ID); dtCustomers.Columns.Add(col1);,應(yīng)用提醒:DataTable對象內(nèi)部可以存在名稱相同但大小寫不同的數(shù)據(jù)列、約束和關(guān)系。這時,引用相應(yīng)對象時需要區(qū)分大小寫。如果DataTable對象內(nèi)部不存在存在名稱相同但大小寫不同的數(shù)據(jù)列、約束和關(guān)系時,則引用相應(yīng)對象時不需要區(qū)分大小寫。,DataTable對象除上述前面介紹的對象外包括其他一些集合。表6-25描述了 這些重要的集合。,表6-25 DataTable對象包含的重要集

36、合,2.針對DataRow對象的操作,(1)創(chuàng)建DataRow對象,DataRow對象不能夠使用new關(guān)鍵字創(chuàng)建,必須使用DataTable對象的NewRow 方法進行創(chuàng)建。具體語句如下:,DataRow mydr = mydt.NewRow();,(2)查詢DataRow對象,查詢DataRow對象的內(nèi)容比較方便,可以使用數(shù)據(jù)列的索引或數(shù)據(jù)列的列 名查詢。具體語句如下:,第一種方式:stBookStore = mydr0;dr 0=12; 第二種方式:stBookStore = mydr“StoreName”;,(3)編輯DataRow對象,編輯DataRow三種方法,以下語句為程序6-25

37、.aspx中編輯DataRow對象的部分。 表6-25 編輯DataRow對象程序代碼及解釋,應(yīng)用提醒:我們也可以直接編輯DataRow對象。這時,BeginEdit方法被隱式調(diào)用,原始值保存在DataRow對象原有版本中,修改值保存在DataRow對象當(dāng)前版本中。直到調(diào)用EndEdit方法時,數(shù)據(jù)才會更新到原有DataRow對象。,(4)添加DataRow對象,添加DataRow對象需要使用DataRowCollection對象的Add方法。該方法在DataRow 對象數(shù)據(jù)賦值結(jié)束后,將DataRow對象添加到DataTable對象。具體語句如下:,dtCustomers.Rows.Add(

38、dr);,(5)刪除DataRow對象,使用DataRowCollection對象的Remove方法從數(shù)據(jù)行集合中移除DataRow對象。,一,使用DataRow對象的delete方法將DataRow對象的行狀態(tài)標(biāo)記為刪除。,二,具體語句如下:,第一種方法: dtCustomers.Rows.Remove(dr); 第二種方法: dr.delete(); dtCustomers.AcceptChanges();,應(yīng)用提醒:Delete 方法僅是將DataTable對象中的DataRow對象行狀態(tài)標(biāo)記為Deleted,而并不會移除它。直到調(diào)用DataAdapter 對象的Update方法時,才會

39、將該行從數(shù)據(jù)庫中刪除。使用 Remove 刪除DataRow對象時,該行僅在DataTable對象中完全刪除,但調(diào)用 DataAdapter 對象的Update方法時,不會在數(shù)據(jù)庫中刪除該行。,3.針對DataRelation對象的操作,創(chuàng)建DataRelation對象包括多種方式,一般常使用兩個DataTable對象相匹配的 數(shù)據(jù)列進行創(chuàng)建。具體語句如下:,第一種方式 dr = new DataRelation(CustOrders,ds.TablesCustomers.ColumnsCustID, 第二種方式 ds.TablesOrders.ColumnsCustID);,添加DataRe

40、lation對象的方法可以使用DataRelationCollection的Add方法將 創(chuàng)建好的DataRelation對象添加到DataTable對象,也可以在添加DataRelation對 象時直接創(chuàng)建。 具體語句如下:,第一種方式 ds.Relations.Add(dr) 第二種方式 ds.Relations.Add(CustOrders,ds.TablesCustomers.ColumnsCustID, ds.TablesOrders.ColumnsCustID);,4.針對DataView對象的操作,創(chuàng)建DataView對象包括三種方式:,使用new關(guān)鍵字進行創(chuàng)建,指定DataTa

41、ble對象進行創(chuàng)建。,指定DataTable對象、RowFilter屬性、Sort 屬性和 DataViewRowState屬性進行創(chuàng)建 其中RowFilter屬性對應(yīng)篩選條件,Sort屬 性對應(yīng)排序條件,DataViewRowState屬性 對應(yīng)數(shù)據(jù)行的狀態(tài)條件。具體語句如下:,/第一種方式 DataView mydv = new DataView(); /第二種方式 DataView mydv = new DataView(myds.TablesCustomers); /第三種方式 DataView mydv = new DataView(myds.TablesCustomers, Cou

42、ntry = USA, ContactName, DataViewRowState.CurrentRows);,(1)排序操作,數(shù)據(jù)列,排序標(biāo)準(zhǔn),DataView 對象的排 序包含,升序,降序,具體語句如下:,mydv.Sort = CustomerID ASC,(2)篩選操作,DataView對象的篩選操作是根據(jù)篩選標(biāo)準(zhǔn)針對特定數(shù)據(jù)列的值進行操作。它需 要設(shè)定DataView對象的RowFilter屬性。該屬性值為一個條件表達(dá)式。它表示了數(shù) 據(jù)列的篩選標(biāo)準(zhǔn),并以字符串的形式出現(xiàn)。具體語句如下:,/通過條件表達(dá)式設(shè)置篩選標(biāo)準(zhǔn) dataView1. RowFilter = CustomerID2

43、 /通過布爾運算條件表達(dá)式設(shè)置篩選標(biāo)準(zhǔn) dataView1. RowFilter = LastName=Simith AND FirstName=Jones,(3)搜索操作,DataView對象搜索操作是根據(jù)主鍵值查找數(shù)據(jù)。它需要使用DataView對象的Find 方法,并返回數(shù)據(jù)行的索引值。具體語句如下: 以下語句為程序6-26.aspx中根據(jù)主鍵id查找數(shù)據(jù)的代碼。,表6-26 根據(jù)主鍵查找數(shù)據(jù)程序代碼及解釋,應(yīng)用提醒:DataView對象搜索操作僅可以根據(jù)主鍵列進行搜索,如果要根據(jù)其他數(shù)據(jù)列值查找數(shù)據(jù),應(yīng)使用DataView對象篩選操作實現(xiàn)。,6.4.5 離線方式實例,Connectio

44、n對象,DataAdapter對象,表6-27是使用連線式數(shù)據(jù)庫操作的應(yīng)用案例,綜合運用了,DataSet對象,編輯,添加,刪除,具體操作步驟如下,(1)啟動Visual Studio 2008,在菜單上依次單擊【文件】【新建】【網(wǎng)站】 【ASP.NET 網(wǎng)站】; (2)在工具箱上拖曳一個Table,將Table中放入1個GridView、1個CheckBox, 3個按鈕,分別將CheckBox和3個按鈕的Text屬性修改為全選、全刪、取 消和添加。,設(shè)計窗口如圖6-27所示:,圖6-27 離線式數(shù)據(jù)庫操作實例設(shè)計窗口,(3)在設(shè)計窗口頁面上點右鍵,選擇查看代碼,在Page_load事件輸入表

45、6-29代碼, 并添加函數(shù)BindData,從而填充DataSet,并綁定到GridView;,表6-29DataSet對象程序代碼及解釋,(4)雙擊GridView的RowEditing事件和Button1按鈕的Click事件,輸入表6-30:,表6-30數(shù)據(jù)行程序代碼及解釋,(5)雙擊按鈕Button1和Button3,輸入表6-30;,表6-30加數(shù)據(jù)行程序代碼及解釋,(6)雙擊GridView的RowDeleting事件,輸入表6-31;,表6-31除DataSet對象數(shù)據(jù)行程序代碼及解釋,(7)在代碼頁創(chuàng)建DataSetUpdating函數(shù),輸入表6-32。,表6-32DataSet

46、對象到數(shù)據(jù)庫程序代碼及解釋,(8)按下CTRL+F5運行程序,得到如下程序界面:,圖6-32式數(shù)據(jù)庫操作實例,本章小結(jié),數(shù)據(jù)庫就是按一定方式把數(shù)據(jù)組織、儲存在一起的集合,就是把各種各樣的 數(shù)據(jù)按照一定的規(guī)則組織在一起,存放在不同的表中。ADO.NET是充當(dāng)ASP.NET 與數(shù)據(jù)庫之間的接口。ADO.NET本質(zhì)上是一個類庫,其中包含大量的類,利用這 些類提供的對象,能夠完成數(shù)據(jù)庫的各種操作。ADO.NET共有5個常用對象,它們 是Connection、Command、DataReader、DataSet、和DataAdapter。ADO.NET 提供了四種數(shù)據(jù)驅(qū)動程序,分別是SQL Server

47、.NET、OkeD.NET、Oracle Db.NET 和ODBC.NET數(shù)據(jù)驅(qū)動程序。數(shù)據(jù)庫操作有兩種方法使用,一種是連線方式,另外 一種是離線方式。連線方式對數(shù)據(jù)庫只能執(zhí)行讀操作,而不能進行修改、增添記 錄等操作。離線方式具有比連線方式更強大的功能。,每課一考,一、填空題(20空,每空2分,共40分),ADO.NET的常用對象是 ( ) 對象、( ) 對象、( ) 對象、( ) 對象和( ) 對象。 2ADO.NET的數(shù)據(jù)庫操作包括( )方式和( )方式。 3. 使用SQL Server數(shù)據(jù)庫時需要引用 ( )System.Data.SqlClient命名空 間; 使用Access數(shù)據(jù)庫時

48、需要引用( )System.Data.OleDb命名空間;使用 Oracle數(shù)據(jù)庫時需要引用( )System.Data.OracleClient命名空間。 4. Connection對象通過( )方法打開數(shù)據(jù)庫,通過( )方法關(guān)閉數(shù)據(jù)庫。 5. 連線式數(shù)據(jù)庫操作主要使用( ) 對象、( ) 對象和( ) 對象。 6. 使用Command對象讀取數(shù)據(jù)表需要使用( )ExecuteReader方法;使用Command對 象執(zhí)行SQL命令需要使用( )ExecuteNonQuery方法;使用Command對象返 回單一結(jié)果需要使用( )ExecuteScalar方法。 7. 使用DataReader對象

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論