




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第13章 數(shù)據(jù)庫(kù)開發(fā)基本操作前面我們學(xué)習(xí)了很多WinForms的控件,利用這些控件可以快速開發(fā)Windows應(yīng)用程序的界面,在這些程序中只涉及了少量的數(shù)據(jù),我們將這些數(shù)據(jù)存儲(chǔ)在文件中。事實(shí)上,創(chuàng)建的大部分應(yīng)用程序都要訪問(wèn)或保存數(shù)據(jù),而這些數(shù)據(jù)基本上都存放在數(shù)據(jù)庫(kù)中,比如通過(guò)ATM柜員機(jī)取錢,只要銀行卡和密碼正確,就可以查詢到你卡中的余額,也可以取出需要的錢,這些都是通過(guò)數(shù)據(jù)庫(kù)操作最終完成的。常用的數(shù)據(jù)庫(kù)有很多種,包括Oracle、MySQL、SQLServer、MS Access等,本書主要使用SQLServer數(shù)據(jù)庫(kù)。為了使客戶能夠訪問(wèn)服務(wù)器中的數(shù)據(jù)庫(kù),必須使用數(shù)據(jù)庫(kù)訪問(wèn)的方法和技術(shù),.NE
2、T提供的ADO.NET就是一種非常好用易學(xué)而且功能強(qiáng)大的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)。本章主要學(xué)習(xí)數(shù)據(jù)庫(kù)的基本知識(shí)和使用ADO.NET訪問(wèn)數(shù)據(jù)庫(kù)的方法和技術(shù)。主要內(nèi)容如下:數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)創(chuàng)建和連接數(shù)據(jù)庫(kù)如何使用VS2008提供的控件快速訪問(wèn)數(shù)據(jù)庫(kù)用ADO.NET訪問(wèn)數(shù)據(jù)庫(kù)的技術(shù)和方法。數(shù)據(jù)集(DataSet)的使用如何使用DataReader訪問(wèn)數(shù)據(jù)庫(kù)數(shù)據(jù)綁定控件GridView的使用13.1 創(chuàng)建和連接數(shù)據(jù)庫(kù) VS2008內(nèi)置了Express版本的SQL Server2005,用于學(xué)習(xí)和開發(fā)使用,Express版本的SQL Server并沒(méi)有提供管理工具(Management Studio),可以使用VS
3、2005的服務(wù)器資源管理器來(lái)操作數(shù)據(jù)庫(kù),也可以在微軟網(wǎng)站下載免費(fèi)的Express版本的SQLServer Management Studio。網(wǎng)址為:http:/ 首先按照以下步驟連接到本機(jī)的SQL Server 2005 Express。13.2 用可視化組件連接并查詢數(shù)據(jù)庫(kù)示例 VS2008提供了非常簡(jiǎn)單和方便的方法,可以把數(shù)據(jù)庫(kù)中的數(shù)據(jù)顯示在窗體上。下面讓我們體會(huì)一下VS2008在數(shù)據(jù)庫(kù)操作方面的簡(jiǎn)單、方便和功能強(qiáng)大。在進(jìn)行下面的步驟之前,首先要保證服務(wù)器資源管理器中存在需要的數(shù)據(jù)庫(kù)。13.3 用ADO.NET連接數(shù)據(jù)庫(kù) ADO.NET是.NET Framework中不可缺少的一部分,它
4、由一組類組成,通過(guò)這些類可以完成對(duì)數(shù)據(jù)庫(kù)的操作,在程序中使用這些類,必須引入System.Data命名控件。使用ADO.NET不僅可以訪問(wèn)數(shù)據(jù)庫(kù),還可以實(shí)現(xiàn)對(duì)XML文件和其他存儲(chǔ)數(shù)據(jù)的訪問(wèn)。本節(jié)通過(guò)學(xué)習(xí)ADO.NET的組成,掌握使用ADO.NET操縱數(shù)據(jù)庫(kù)的方法,使我們編寫的應(yīng)用程序功能更加強(qiáng)大。13.3.1 ADO.NET簡(jiǎn)介ADO.NET的名稱起源于ADO(ActiveX Data Objects),是一個(gè)非常廣泛的類組,以往的Microsoft訪問(wèn)數(shù)據(jù)庫(kù)基本都使用該技術(shù)。ADO.NET與ADO的作用相同,但是功能更強(qiáng)大,更容易使用,而且ADO.NET中的類、屬性和方法與ADO也有很大的不
5、同。ADO.NET比ADO的功能有很大的改進(jìn),其優(yōu)點(diǎn)主要表現(xiàn)在以下幾個(gè)方面:可以簡(jiǎn)單的訪問(wèn)關(guān)系數(shù)據(jù)。ADO.NET的主要目標(biāo)是可以提供對(duì)關(guān)系數(shù)據(jù)的簡(jiǎn)單訪問(wèn),它與數(shù)據(jù)源斷開連接時(shí)也可使用數(shù)據(jù),這主要是基于ADO.NET對(duì)數(shù)據(jù)集(DataSet)的支持。數(shù)據(jù)集的概念在本章的后面會(huì)有詳細(xì)的講解。提供對(duì)XMI的支持。隨著XML的應(yīng)用越來(lái)越廣泛,和XML進(jìn)行交互是數(shù)據(jù)訪問(wèn)的重要部分。ADO.NET提供了豐富的類實(shí)現(xiàn)XML數(shù)據(jù)的讀寫??蓴U(kuò)展性強(qiáng)。ADO.NET提供了幾種內(nèi)置的.NET數(shù)據(jù)提供者,有專門用于連接SQL Server和Oracle數(shù)據(jù)庫(kù)的類,也有支持通用數(shù)據(jù)接口ODBC和OLE DB。因此通過(guò)
6、內(nèi)置的數(shù)據(jù)提供者,ADO.NET支持幾乎所有的數(shù)據(jù)庫(kù)或數(shù)據(jù)格式,具有很香的擴(kuò)展性。支持多層架構(gòu)和工廠模式。多層架構(gòu)是當(dāng)今商業(yè)和電子商務(wù)應(yīng)用程序普遍使用的體系結(jié)構(gòu),ADO.NET通過(guò)使用XML格式的數(shù)據(jù)對(duì)其提供支持。ADO.NET提供了工廠模式,可以在不修改代碼的情況下,實(shí)現(xiàn)數(shù)據(jù)庫(kù)的移植。圖13.12顯示了ADO.NET在.NET Framework中起的作用。13.3.2 ADO.NET的主要組件ADO.NET提供了兩個(gè)組件用來(lái)訪問(wèn)和處理數(shù)據(jù):NET Framework數(shù)據(jù)提供程序和數(shù)據(jù)集(DataSet)。.NET Framework數(shù)據(jù)提供程序包含用于訪問(wèn)各種數(shù)據(jù)源的數(shù)據(jù)對(duì)象,是專門為數(shù)據(jù)
7、處理以及快速的只進(jìn)、只讀訪問(wèn)數(shù)據(jù)而設(shè)計(jì)的組件,使用這些數(shù)據(jù)提供程序可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,檢索、查詢、更新、刪除數(shù)據(jù)庫(kù)中的數(shù)據(jù)等操作。目前有4種類型的數(shù)據(jù)提供程序,具體要使用哪種數(shù)據(jù)提供程序,要根據(jù)使用的是什么數(shù)據(jù)庫(kù)。數(shù)據(jù)提供程序使用范圍見表13.1。13.3.3 用Connection對(duì)象建立數(shù)據(jù)庫(kù)連接 【本節(jié)示例參考:源代碼C13Example_CreateCon】 Connection對(duì)象用于打開與數(shù)據(jù)庫(kù)的連接,以便對(duì)其執(zhí)行命令。不同的.NET數(shù)據(jù)提供程序都有自己的連接類,見表13.3。13.3.4 用Command對(duì)象檢索和操作數(shù)據(jù)庫(kù)中數(shù)據(jù) 創(chuàng)建了數(shù)據(jù)連接之后,就要對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行操
8、作,ADO.NET中提供的Command對(duì)象可以對(duì)數(shù)據(jù)庫(kù)執(zhí)行增、刪、改、查。 Command對(duì)象屬于.NET數(shù)據(jù)提供程序,不同的數(shù)據(jù)提供程序有不同的Command對(duì)象,見表13.5。13.3.5 查詢和檢索數(shù)據(jù)【本節(jié)示例參考:源代碼C13 Example_School】前面我們學(xué)習(xí)的Connection對(duì)象和Command對(duì)象都是為實(shí)現(xiàn)數(shù)據(jù)庫(kù)操縱而設(shè)計(jì)的,本節(jié)通過(guò)一個(gè)示例程序,學(xué)習(xí)使用這兩個(gè)對(duì)象實(shí)現(xiàn)數(shù)據(jù)查詢。本例使用的數(shù)據(jù)庫(kù)名稱為School,數(shù)據(jù)表名為“Teacher”。創(chuàng)建一個(gè)Windows應(yīng)用程序,在窗體中添加一個(gè)按鈕“查詢”,程序運(yùn)行時(shí),單擊“查詢”按鈕將檢索到的數(shù)據(jù)顯示在消息框(Me
9、ssageBox)中。在按鈕“查詢”的Click事件中添加代碼如代碼13- 添加新數(shù)據(jù) 【本節(jié)示例參考:源代碼C13 Example_School】 通過(guò)ADO.NET中的Command對(duì)象可以向數(shù)據(jù)庫(kù)發(fā)送操作命令,這些操作命令可以是某個(gè)SQL語(yǔ)句或存儲(chǔ)過(guò)程。通常對(duì)數(shù)據(jù)庫(kù)的操作包括增、刪、改、查4種,前三種操作都是單向的,即這些操作修改數(shù)據(jù)庫(kù)中數(shù)據(jù)后并不返回?cái)?shù)據(jù)。查詢屬于雙向操作,既要向數(shù)據(jù)庫(kù)提交查詢命令還要從從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)。 注意:所有的單向操作都使用Command對(duì)象的ExecuteNonQuery()方法來(lái)執(zhí)行。13.3.7 刪除數(shù)據(jù)【本節(jié)示例參考:源代碼C13 Ex
10、ample_School】刪除數(shù)據(jù)的過(guò)程和插入數(shù)據(jù)的基本相同,只要改變sql語(yǔ)句即可,具體步驟見上一節(jié),這里就不再詳述。給按鈕“刪除”的Click事件添加代碼,示例代碼13-3說(shuō)明了刪除數(shù)據(jù)的操作。13.3.8 更新數(shù)據(jù) 【本節(jié)示例參考:源代碼C13 Example_School】 更新數(shù)據(jù)時(shí)唯一不同的地方是sql語(yǔ)句,將更新數(shù)據(jù)的代碼添加到更新按鈕的Click事件中。13.4 數(shù)據(jù)集(DataSet)簡(jiǎn)介 DataSet對(duì)象是ADO.NET的一個(gè)重要組成部分,是支持ADO.NET斷開式、分布式的數(shù)據(jù)方案的核心對(duì)象,它允許從數(shù)據(jù)庫(kù)中檢索到的數(shù)據(jù)存放在內(nèi)存中,可以理解為一個(gè)臨時(shí)的數(shù)據(jù)庫(kù),可以從任
11、何有效的數(shù)據(jù)源將數(shù)據(jù)加載到數(shù)據(jù)集中。13.4.1 認(rèn)識(shí)數(shù)據(jù)集簡(jiǎn)單地說(shuō)數(shù)據(jù)集就是內(nèi)存中的一個(gè)臨時(shí)數(shù)據(jù)庫(kù)。如何理解這個(gè)概念呢?下面來(lái)打一個(gè)比喻。工廠一般在每天上班時(shí)要把今天用的原料由專人從倉(cāng)庫(kù)領(lǐng)出來(lái),放在車間的臨時(shí)倉(cāng)庫(kù)中,由每個(gè)工人直接從臨時(shí)倉(cāng)庫(kù)領(lǐng)取,而不是每個(gè)人要用材料都去倉(cāng)庫(kù)領(lǐng)取。下午下班時(shí)要把沒(méi)有用的材料和制作好的成品都要由專人存放到倉(cāng)庫(kù)中。那么數(shù)據(jù)集就相當(dāng)于臨時(shí)倉(cāng)庫(kù),將需要的數(shù)據(jù)從數(shù)據(jù)庫(kù)一次提取出來(lái),提供給用戶使用,修改后的結(jié)果可以再經(jīng)由數(shù)據(jù)集提交給數(shù)據(jù)庫(kù)進(jìn)行保存。數(shù)據(jù)集把應(yīng)用程序需要的數(shù)據(jù)臨時(shí)保存在內(nèi)存中,可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)的斷開式訪問(wèn),應(yīng)用程序需要數(shù)據(jù)時(shí),直接從內(nèi)存中的數(shù)據(jù)集讀取數(shù)據(jù),也可
12、以修改數(shù)據(jù)集中的數(shù)據(jù),將修改后的數(shù)據(jù)一起提交給數(shù)據(jù)庫(kù)。數(shù)據(jù)集的結(jié)構(gòu)和數(shù)據(jù)庫(kù)很相似,由表組成,每張表由行和列組成,數(shù)據(jù)集的結(jié)構(gòu)如圖13.21所示。13.4.2 數(shù)據(jù)集的工作原理 數(shù)據(jù)集并不直接和數(shù)據(jù)庫(kù)打交道,它和數(shù)據(jù)庫(kù)之間的相互作用是通過(guò).NET數(shù)據(jù)提供程序中的數(shù)據(jù)適配器(DataAdapter)對(duì)象來(lái)完成的。那么數(shù)據(jù)集是如何工作的呢?它的工作原理如圖13.22所示。13.4.3 如何創(chuàng)建數(shù)據(jù)集創(chuàng)建數(shù)據(jù)集對(duì)象和創(chuàng)建普通類的對(duì)象方法相同,都使用new關(guān)鍵字實(shí)例化類,語(yǔ)法如下:DataSet 數(shù)據(jù)集對(duì)象名=new DataSet(“數(shù)據(jù)集的名稱”);語(yǔ)法中的參數(shù)“數(shù)據(jù)集名稱”有和沒(méi)有均可,沒(méi)有時(shí),系
13、統(tǒng)默認(rèn)給數(shù)據(jù)集分配名稱為“NewDataSet”,以下寫法都是正確的:DataSet da=new DataSet();DataSet da=new DataSet(“book”);VS2008可以通過(guò)使用控件的方式創(chuàng)建數(shù)據(jù)集對(duì)象。在工具箱中雙擊“DataSet”按鈕,打開“添加數(shù)據(jù)集”對(duì)話框,在類型化數(shù)據(jù)集和非類型化數(shù)據(jù)集中選擇,如圖13.23所示。如果選擇類型化數(shù)據(jù)集,要求必須已經(jīng)在項(xiàng)目中有內(nèi)置架構(gòu)的數(shù)據(jù)集,如果沒(méi)有,是不能創(chuàng)建的。13.4.4 數(shù)據(jù)適配器(DataAdapter)對(duì)象【本節(jié)示例參考:源代碼C13 Example_DataSetTest】數(shù)據(jù)集的作用是臨時(shí)存放數(shù)據(jù),其并不直
14、接和數(shù)據(jù)庫(kù)打交道,它和數(shù)據(jù)庫(kù)之間的相互作用是通過(guò).NET數(shù)據(jù)提供程序中的數(shù)據(jù)適配器(DataAdapter)對(duì)象來(lái)完成的。數(shù)據(jù)庫(kù)中的數(shù)據(jù)需要通過(guò)數(shù)據(jù)適配器的運(yùn)輸才存放到數(shù)據(jù)集中,而在數(shù)據(jù)集中的任何修改也要通過(guò)數(shù)據(jù)適配器提交到數(shù)據(jù)庫(kù)中,數(shù)據(jù)適配器就象倉(cāng)庫(kù)和車間臨時(shí)倉(cāng)庫(kù)之間運(yùn)輸材料的運(yùn)貨車,而數(shù)據(jù)連接則是運(yùn)貨車行走的路線。DataAdapter在數(shù)據(jù)集和數(shù)據(jù)庫(kù)之間起橋梁的作用。DataAdapter用于管理與數(shù)據(jù)庫(kù)的連接、執(zhí)行命令并填充數(shù)據(jù)集和更新數(shù)據(jù)庫(kù)。數(shù)據(jù)適配器屬于.NET數(shù)據(jù)提供程序,不同類型的數(shù)據(jù)庫(kù)使用不同的數(shù)據(jù)適配器,相應(yīng)的命名空間中的適配器見表13.10。13.4.5 簡(jiǎn)單實(shí)例使用數(shù)據(jù)
15、集檢索數(shù)據(jù) 【 本 節(jié) 示 例 參 考 : 源 代 碼 C 1 3 Example_DataSetTest】 本節(jié)的應(yīng)用程序用于根據(jù)學(xué)號(hào)檢索學(xué)生的詳細(xì)信息,其界面如圖13.25所示。13.5 使用DataReader訪問(wèn)數(shù)據(jù) DataReader是.NET數(shù)據(jù)給程序提供的一個(gè)輕量級(jí)對(duì)象,用來(lái)從數(shù)據(jù)庫(kù)檢索只讀的且指針只能向前移的數(shù)據(jù)流,對(duì)于要求優(yōu)化只讀只進(jìn)數(shù)據(jù)訪問(wèn)的應(yīng)用程序,DataReader是一個(gè)較好的選擇。只讀就是只能通過(guò)它獲取數(shù)據(jù)而不能修改數(shù)據(jù),只進(jìn)就是讀取記錄的游標(biāo)只能向前移動(dòng),不能讀取了后邊的記錄返回去讀前面的。13.5.1 認(rèn)識(shí)DataReader 對(duì)象 使用DataReader對(duì)
16、象可以從數(shù)據(jù)庫(kù)中檢索數(shù)據(jù),它每次只能從查詢結(jié)果中讀取一行數(shù)據(jù)到內(nèi)存中,并只允許在結(jié)果中每次向前移動(dòng)一個(gè)記錄。DataReader屬于.NET數(shù)據(jù)提供程序,不同的數(shù)據(jù)提供程序都有不同的DataReader類。表13.13列出了.NET數(shù)據(jù)提供程序及其DataReader類。13.5.2 用DataReader讀取數(shù)據(jù)【本節(jié)示例參考:源代碼C13Example_DataReaderTest】與前面學(xué)習(xí)的數(shù)據(jù)提供程序中的其他組件不同,DataReader對(duì)象不能直接實(shí)例化,需要調(diào)用Command對(duì)象的ExecuteReader()方法的返回值。使用DataReader讀取數(shù)據(jù)的步驟如下:(1)創(chuàng)建數(shù)
17、據(jù)連接的Connection對(duì)象。(2)創(chuàng)建Command對(duì)象。(3)打開數(shù)據(jù)連接。(4)調(diào)用Command對(duì)象的ExecuteReader()方法創(chuàng)建DataReader對(duì)象,示例如下:SqlDataReader reader=comm. ExecuteReader();其中comm為Command對(duì)象。(5)使用DataReader對(duì)象的read()方法逐行讀取數(shù)據(jù)。此方法返回一個(gè)布爾值,如果讀到一行記錄,返回true,否則返回false。(6)讀取當(dāng)前行的某列數(shù)據(jù)。讀取數(shù)據(jù)有兩種寫法,一種是使用GetValue(i)方法獲取值,參數(shù)“i”為列的索引,得到的值是Object類型,必須進(jìn)行數(shù)
18、據(jù)類型轉(zhuǎn)換。示例如下:string str=reader.GetValue(1).ToString();其中GetValue(1)方法中的參數(shù)“1”表示第二列。也可以使用類似索引器的方式訪問(wèn)數(shù)據(jù),語(yǔ)法為:(數(shù)據(jù)類型)DataReader i;或(數(shù)據(jù)類型)DataReader“列名”;這種方法返回的值也是Object類型的,需要進(jìn)行拆箱操作,轉(zhuǎn)換數(shù)據(jù)類型。(7)關(guān)閉DataReader對(duì)象,調(diào)用該對(duì)象的Close()方法。如:reader.Close(); 13.6. 用DataGridView 控件顯示和操作數(shù)據(jù)在本章的13.2節(jié)中,我們已經(jīng)見識(shí)過(guò)DataGridView的強(qiáng)大功能和開發(fā)時(shí)的
19、簡(jiǎn)單快速,不過(guò)那只是DataGridView 控件最簡(jiǎn)單的使用方式,該控件除了可以直接顯示數(shù)據(jù)表數(shù)據(jù)外,還支持排序、數(shù)據(jù)綁定、自定義外觀等高級(jí)功能。首先學(xué)習(xí)一個(gè)概念“數(shù)據(jù)綁定”。C#中的數(shù)據(jù)綁定就是把數(shù)據(jù)源和顯示數(shù)據(jù)的窗體中控件進(jìn)行綁定,綁定后數(shù)據(jù)源和窗體控件構(gòu)成了一個(gè)邏輯整體,數(shù)據(jù)源中的數(shù)據(jù)發(fā)生變化,窗體中控件顯示的數(shù)據(jù)也會(huì)發(fā)生相同的變化。Windows窗體有兩種類型的數(shù)據(jù)綁定:簡(jiǎn)單綁定和復(fù)雜綁定。簡(jiǎn)單綁定用于TextBox、Label等控件,只能將控件的某個(gè)屬性綁定到單個(gè)數(shù)據(jù)元素。復(fù)雜綁定是指將一個(gè)控件綁定到多個(gè)數(shù)據(jù)元素,DataGridView控件綁定數(shù)據(jù)就屬于復(fù)雜綁定,它可以一次顯示多
20、條記錄和多個(gè)字段的值。13.6.1 認(rèn)識(shí)DataGridView(數(shù)據(jù)網(wǎng)格視圖)控件 Windows窗體工具箱中的DataGridView控件位于“數(shù)據(jù)”項(xiàng)中,如圖13.27所示。13.6.2 將DataGridView控件綁定到數(shù)據(jù)集 【本節(jié)示例參考:源代碼C13 Example_dgViewTest】 DataGridView控件顯示數(shù)據(jù)最簡(jiǎn)單的方式就是綁定數(shù)據(jù)源,設(shè)置其DataSource屬性即可實(shí)現(xiàn)。DataGridView控件的數(shù)據(jù)源可以是數(shù)組、集合或數(shù)據(jù)集,本節(jié)介紹綁定到數(shù)據(jù)集的方法。將DataGridView控件綁定到數(shù)據(jù)集的步驟如下: 13.6.3 將DataGridView控
21、件綁定到數(shù)據(jù)視圖【本節(jié)示例參考:源代碼C13 Example_dgViewTest】在用DataGridView控件顯示數(shù)據(jù)的時(shí)候,常常并不需要顯示表中的全部?jī)?nèi)容,可能需要顯示根據(jù)某個(gè)條件設(shè)定的內(nèi)容,如只顯示學(xué)生信息表中的女生,你可能想到利用SQL語(yǔ)句重新查詢數(shù)據(jù)庫(kù)中的數(shù)據(jù),這樣是可以實(shí)現(xiàn)。使用數(shù)據(jù)視圖可以利用已經(jīng)獲得的數(shù)據(jù)表,不需要重新進(jìn)行數(shù)據(jù)查詢,在數(shù)據(jù)連接斷開后也可以實(shí)現(xiàn)。數(shù)據(jù)視圖的概念和數(shù)據(jù)庫(kù)中的視圖概念相似,可用于排序、篩選數(shù)據(jù)表等操作。視圖是為了滿足數(shù)據(jù)的不同需求而存在的,數(shù)據(jù)庫(kù)中一個(gè)表的數(shù)據(jù)可以有多個(gè)視圖,這些視圖并不影響原始的數(shù)據(jù)。如果把數(shù)據(jù)表中的記錄看做一個(gè)人,那么視圖就像這
22、個(gè)人穿的不同衣服,就有不同的形象,而實(shí)質(zhì)上還是同一個(gè)人。視圖最常用的屬性就是進(jìn)行數(shù)據(jù)綁定,其重要功能是可以根據(jù)表達(dá)式或行狀態(tài)進(jìn)行行的過(guò)濾,通過(guò)設(shè)置RowFilter屬性可以利用表達(dá)式進(jìn)行過(guò)濾。13.6.4 保存DataGridView控件修改后的數(shù)據(jù)【本節(jié)示例參考:源代碼C13 Example_dgViewTest】利用DataGridView控件顯示了數(shù)據(jù)后,單元格都是可以編輯的,編輯后的數(shù)據(jù)如何保存到數(shù)據(jù)庫(kù)中呢?其實(shí)很簡(jiǎn)單,使用前邊學(xué)習(xí)過(guò)的“保存數(shù)據(jù)集中的數(shù)據(jù)”的方法,這里就不再詳細(xì)講述,只給出示例代碼。打開項(xiàng)目Example_dgViewTest,在窗體文件frmStudent中添加按鈕
23、“btnSave”,“Text”屬性設(shè)為“保存”,用來(lái)保存DataGridView控件修改后的數(shù)據(jù)。按鈕“btnSave”的“Click”事件處理方法代碼如下:01private void btnSave_Click(object sender, EventArgs e)02 03 DialogResult result = MessageBox.Show(要將修改保存到數(shù)據(jù)庫(kù)嗎?,操作提示, MessageBoxButtons.OKCancel,MessageBoxIcon.Question);04 if (result =DialogResult.OK)05 06 SqlCommandBu
24、ilder bulilder = new SqlCommandBuilder(ada);07 ada.Update(ds,student);08 MessageBox.Show(保存成功);09 10 13.7 綜合示例留言板 前面學(xué)習(xí)了DataReader、DataSet、DataAdapter、DataGridView控件,現(xiàn)在來(lái)做一個(gè)稍微復(fù)雜的例子,綜合運(yùn)用這些控件的功能來(lái)實(shí)現(xiàn)。 【問(wèn)題:開發(fā)一套用于留言的小留言板】,實(shí)現(xiàn)的功能如下: 查詢出用戶名 查詢出相關(guān)的留言內(nèi)容 用戶發(fā)表留言13.7.1 數(shù)據(jù)庫(kù)設(shè)計(jì) 數(shù)據(jù)庫(kù)設(shè)計(jì)要求如下: 數(shù)據(jù)庫(kù)名稱:MessageBoard,數(shù)據(jù)庫(kù)表UserIn
25、fo所有字段均不允許為空,表UserInfo字段見表.2 創(chuàng)建項(xiàng)目,設(shè)計(jì)窗體界面 (1)創(chuàng)建項(xiàng)目名稱為MessageBoard,窗體名稱為frmMessage。 (2)設(shè)計(jì)frmMessage窗體如圖13.34所示。13.7.3 設(shè)置窗體中DataGridView的屬性 選中DataGridView控件,在屬性窗口中找到Columns屬性,打開列編輯器,在其中添加如圖13.35所示的幾列,并把每一列打DataPropertyName屬性設(shè)為數(shù)據(jù)表中對(duì)應(yīng)的列名。其中“標(biāo)識(shí)”列對(duì)應(yīng)的是MessageBoard數(shù)據(jù)表中的主鍵MessageId,這一列不讓用戶看到,也不能修改,所以把它的Visible屬性設(shè)為False,把ReadOnly屬性設(shè)為True。13.7.4 填充數(shù)據(jù)集,顯示數(shù)據(jù) 在窗體中聲明全局變量,包括數(shù)據(jù)庫(kù)連接字符串、數(shù)據(jù)集、適配器和數(shù)據(jù)連接對(duì)象,并
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025青島市房屋中介服務(wù)合同
- 空間機(jī)械臂零重力標(biāo)定論文
- 2025規(guī)范版自建房屋買賣合同樣本
- 2025年醫(yī)保知識(shí)考試題庫(kù)及答案:醫(yī)?;颊邫?quán)益保障政策實(shí)施與成效試題
- 2025標(biāo)準(zhǔn)店鋪?zhàn)赓U合同范本【常用版】
- 2025年成人高考《語(yǔ)文》文學(xué)常識(shí)《詩(shī)歌鑒賞》意象運(yùn)用題庫(kù)
- 2025年初中地理學(xué)業(yè)水平考試模擬試卷(地理環(huán)境與可持續(xù)發(fā)展)全真試題
- 2025年成人高考語(yǔ)文高頻考點(diǎn)速記題庫(kù):文言文閱讀理解能力提升試題
- 2025年安全生產(chǎn)考試題庫(kù)(行業(yè)安全規(guī)范)安全生產(chǎn)事故應(yīng)急演練沖刺試題
- 2025年小學(xué)語(yǔ)文畢業(yè)升學(xué)考試全真模擬卷(作文技巧與方法)
- 旅游策劃期末試卷B卷-旅游策劃(哈工大出版社)配套材料
- 生物制藥技術(shù)專業(yè)建設(shè)方案
- TY/T 1106-2023群眾體育賽事活動(dòng)運(yùn)營(yíng)服務(wù)規(guī)范
- 無(wú)錫星洲工業(yè)園低碳園區(qū)規(guī)劃方案
- 北師大版心理健康六年級(jí)上冊(cè)第十四課欣賞我自己 課件
- 小班語(yǔ)言繪本《報(bào)紙上的洞洞》
- 宴席設(shè)計(jì)與菜品開發(fā)第二版勞動(dòng)版宴席菜肴與菜單設(shè)計(jì)課件
- 2023學(xué)年完整公開課版積極情緒
- 軸向拉壓桿的強(qiáng)度計(jì)算
- 安徽寶鎂輕合金有限公司年產(chǎn)30萬(wàn)噸高性能鎂基輕合金項(xiàng)目環(huán)境影響報(bào)告書
- 2160kn溢洪道雙向門機(jī)安裝使用說(shuō)明書
評(píng)論
0/150
提交評(píng)論