版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第9章
數(shù)據(jù)庫應(yīng)用
9.1數(shù)據(jù)庫基礎(chǔ)9.2ADO.NET原理9.3DataSet應(yīng)用9.4綜合應(yīng)用9.1數(shù)據(jù)庫基礎(chǔ)Access2007(全名MicrosoftOfficeAccess2007)是由微軟發(fā)布的小型數(shù)據(jù)庫管理系統(tǒng)。它結(jié)合了
MicrosoftJetDatabaseEngine和
圖形用戶界面兩項特點,是
MicrosoftOffice的成員之一。Access在2000年的時候成為了計算機等級考試二級選考的一種數(shù)據(jù)庫語言,并且因它的易學(xué)易用,正逐步取代傳統(tǒng)的VFP成為二級中最受歡迎的數(shù)據(jù)庫語言。9.1.2創(chuàng)建數(shù)據(jù)庫(1)啟動Access2007,單擊左上角圓形按鈕,從彈出的菜單中選擇【新建】項,再在窗口右側(cè)設(shè)定新建數(shù)據(jù)庫的路徑和名稱,將此數(shù)據(jù)庫命名為“xscj.accdb”;單擊【創(chuàng)建】按鈕,如圖9.1所示。9.1.2創(chuàng)建數(shù)據(jù)庫(2)單擊工具欄選項頁【創(chuàng)建】→【表】,右擊表標(biāo)簽,選擇【設(shè)計視圖】,如圖9.2所示,在【另存為】對話框中給表取名,確定后,系統(tǒng)將打開表的設(shè)計視圖,進入“數(shù)據(jù)表設(shè)計”窗口。9.1.2創(chuàng)建數(shù)據(jù)庫在該窗口中,有“字段名稱”、“數(shù)據(jù)類型”和“說明”3個選項,可根據(jù)需要創(chuàng)建表結(jié)構(gòu)。本例要創(chuàng)建KC(課程)表、XS(學(xué)生)表和XS_KC(成績)3個表。創(chuàng)建XS_KC表結(jié)構(gòu)之后的窗口如圖9.3所示,設(shè)計完成后關(guān)閉設(shè)計窗口。9.1.2創(chuàng)建數(shù)據(jù)庫在表設(shè)計窗口,按設(shè)定的字段名填入后,數(shù)據(jù)類型自動默認(rèn)為“文本”,可根據(jù)需要從下拉列表(如圖9.4)中選定適當(dāng)?shù)念愋停徽f明列可不填,僅供注釋用。9.1.2創(chuàng)建數(shù)據(jù)庫本實驗數(shù)據(jù)庫3個表的各字段名稱、含義、類型和數(shù)據(jù)屬性如表9.1所示。9.1.2創(chuàng)建數(shù)據(jù)庫(3)3個表的結(jié)構(gòu)建好后,用鼠標(biāo)雙擊“XS”表名,打開數(shù)據(jù)輸入界面,在每列中填入相應(yīng)類型和格式的數(shù)據(jù),即可完成該數(shù)據(jù)表的創(chuàng)建工作。數(shù)據(jù)輸入窗口如圖9.5所示。9.1.3SQL語言表9.2列出了常用的SQL命令及其相應(yīng)的功能,表9.3列出了常用的一些SQL子句,這些命令和子句經(jīng)過一定的組合,可以創(chuàng)建一個SQL語句,完成某項數(shù)據(jù)庫操作功能。9.1.3SQL語言1.SELECT命令(1)功能SELECT命令的功能是從給定的數(shù)據(jù)表或數(shù)據(jù)表的連接中找出滿足給定條件的記錄,并且返回這些記錄的內(nèi)容。(2)語法SELECT[ALL|DISTINCT|DISTINCTROW]fields_listFROMtable_names[WHERE…][GROUPBY…][HAVING…][ORDERBY…]9.1.3SQL語言(3)參數(shù)說明[ALL|DISTINCT|DISTINCTROW]:ALL是選擇符合條件的全部記錄;DISTINCT是過濾掉包含返回字段內(nèi)容的記錄;DISTINCTROW是過濾掉包含返回記錄內(nèi)容的記錄。fields_list:字段名列表,可以來自同一個表或不同的表,字段名之間用逗號分隔。如果不同的表中有相同的字段名,在字段名列表中需要指明該字段來自哪一個表,即以table_name.fields_name方式指明。table_names:要查詢的數(shù)據(jù)表名,可以是一個表或多個表,表名之間用逗號分隔。FROM、WHERE、GROUPBY、HAVING、ORDERBY子句的說明見表9.3。9.1.3SQL語言(4)邏輯運算符、比較運算符、通配符要設(shè)置一個查詢條件,必然要用到比較運算符、邏輯運算符和一些通配符等,表9.4、表9.5和表9.6分別列出了這些內(nèi)容。(5)聚合函數(shù)在SELECT語句中可使用的聚合函數(shù)如表9.7所示。9.1.3SQL語言(6)Select語句示例①查詢學(xué)生表中所有字段。SELECT*FROMXS②從學(xué)生表中查詢所有專業(yè)名稱,要求不重復(fù)顯示相同的專業(yè)名稱。SELECTDISTINCTZYMFROMXS③按學(xué)號升序、成績降序檢索學(xué)生成績。SELECT*FROMXS_KCORDERBYXHASC,CJDESC④查詢至少有一門課成績大于85的學(xué)生姓名。SELECTXMFROMXS,XS_KCWHEREXS_KC.CJ>85andXS.XH=XS_KC.XH⑤查詢與“李林”專業(yè)相同的學(xué)生姓名。SELECTXMFROMXSWHEREXS.ZYM=(SELECTZYMFROMXSWHEREXMIN('李林'))
9.1.3SQL語言⑥查詢所有成績在80~90之間的學(xué)生。SELECTXS.XMFROMXS,XS_KCWHERE
(XS_KC.CJBETWEEN80AND90)AND(XS.XH=XS_KC.XH)⑦計算英語課的平均成績、最高成績和最低成績。SELECTKCM, AVG(XS_KC.CJ)AS"平均成績", MAX(XS_KC.CJ)AS"最高成績", MIN(XS_KC.CJ)AS"最低成績"FROMXS_KC,KC;
WHEREKCM=
"英語"ANDXS_KC.KCH=KC.KCH⑧統(tǒng)計每門課程的名稱、平均成績。SELECTKC.KCM,AVG(XS_KC.CJ)AS"平均成績"FROMKC,XS_KC;
GROUPBYXS_KC.KCHWHEREXS_KC.KCH=KC.KCH⑨將成績表和課程表按內(nèi)部連接,查詢每個學(xué)生的學(xué)號、課程名、該課程成績。SELECTXS_KC.XH,KC.KCM,XS_KC.CJFROMXS_KCINNERJOINKCON
XS_KC.KCH=KC.KCH9.1.3SQL語言2.INSERT命令(1)功能INSERT命令的功能是向一個表中加入一條記錄。(2)語法INSERTINTOtable[(field1[,field2[,…]])]VALUES(val1[,val2[,…]])使用該語句時,必須指定要加入的每個字段名和它對應(yīng)的值。如果一個字段和對應(yīng)的數(shù)值為空,那么系統(tǒng)自動加入一個相應(yīng)的默認(rèn)值,新加入的記錄排在表的尾部。例如:InsertintoXS_KC(CJ,KCH,XH)values(78,'01','060102')9.1.3SQL語言3.UPDATE命令(1)功能UPDATE命令的功能是把數(shù)據(jù)表中的某些字段值設(shè)置為一個新值。(2)語法UPDATEtableSETvalueWHEREcriteria其中,SET子句中的value是一個等式。它將改變指定的表中被選擇的那些記錄的當(dāng)前值。例如:UPDATEXS_KCSETCJ=87,KCH='02'WHEREXKID=319.1.3SQL語言4.DELETE命令(1)功能DELETE命令的功能是一次刪除指定表中的記錄。該命令刪除的是整條記錄,而不是單個字段。(2)語法DELETE*FROMtableWHEREcriteria例如:DELETE*FROMXS_KCWHEREXH='060102'
9.2ADO.NET原理9.2.1ADO.NET模型ADO.NET(ActiveXDataObject.NET)是一個功能強大的數(shù)據(jù)訪問接口,通過ADO.NET可以方便地訪問數(shù)據(jù)庫,其編程接口如圖9.6所示。9.2.1ADO.NET模型SQLServer.NET和OLEDB.NET數(shù)據(jù)提供程序訪問物理數(shù)據(jù)庫模型如圖9.7所示。9.2.2ADO.NET結(jié)構(gòu)ADO.NET對象模型的兩個核心組件是.NET數(shù)據(jù)提供程序和DataSet對象,其結(jié)構(gòu)如圖9.8所示。9.2.3數(shù)據(jù)訪問控件在VB.NET集成開發(fā)環(huán)境工具箱的“數(shù)據(jù)”控件列表中,有DataSet、DataGridView、BindingSource、BindingNavigator等控件,如圖9.9所示。9.2.3數(shù)據(jù)訪問控件針對不同數(shù)據(jù)庫編程的時候還會用到幾組不同前綴的Connection、DataAdapter、Command等控件,如果控件不在工具箱中,可以用鼠標(biāo)右擊工具箱,選擇【選擇項】菜單,進入【選擇工具箱項】對話框,將相應(yīng)的控件添加到工具箱中,如圖9.10所示。9.2.4數(shù)據(jù)訪問步驟(1)用Connection建立與數(shù)據(jù)庫的連接。在ADO.NET中,一般用Connection對象建立與數(shù)據(jù)庫的連接,在工具箱中有幾種Connection對象,可以根據(jù)需要選擇。通過設(shè)置Connection對象的ConnectionString屬性,可以連接各種數(shù)據(jù)源,該屬性值是字符串類型,稱為數(shù)據(jù)庫連接串,不同的數(shù)據(jù)庫,它的連接串是不同的。例如,連接到D盤MyDocuments文件夾中的Access數(shù)據(jù)庫xscj.accdb的連接串如下:OleDbConnection1.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;DataSource='D:\MyDocuments\xscj.accdb'" '定義連接OleDbConnection1.Open() '打開連接9.2.4數(shù)據(jù)訪問步驟①首先,通過單擊【數(shù)據(jù)】→【添加新數(shù)據(jù)源】菜單項,彈出對話框,如圖9.11(a)所示,單擊【下一步】按鈕,在對話框中單擊【新建連接】按鈕,顯示如圖9.11(b)所示。9.2.4數(shù)據(jù)訪問步驟選擇要連接的數(shù)據(jù)庫文件名,單擊【確定】按鈕,顯示如圖9.12所示,再單擊【完成】按鈕,系統(tǒng)即建立了一個數(shù)據(jù)源,新建的DataSet對象名為“xscjDataSet”。9.2.4數(shù)據(jù)訪問步驟②其次,在項目中添加一個OleDbConnection對象,在它的“ConnectionString”屬性下拉列表中將顯示系統(tǒng)已建立的連接,如圖9.13所示,選擇相應(yīng)的連接即可完成數(shù)據(jù)庫的連接設(shè)置。③最后,在程序中調(diào)用OleDbConnection對象的Open方法打開數(shù)據(jù)庫連接。9.2.4數(shù)據(jù)訪問步驟(2)用Command對象執(zhí)行SQL命令。連接數(shù)據(jù)庫后,通過Command對象或DataAdapter對象執(zhí)行Select、Insert、Update或Delete等SQL命令,對數(shù)據(jù)庫進行查詢、插入、更新和刪除等操作。Command對象要執(zhí)行的SQL命令是通過它的CommandText屬性定義的,CommandText屬性值也是字符串類型。執(zhí)行SQL命令通過調(diào)用Command對象的幾個方法來完成,Command對象的常用方法見表9.8。9.2.4數(shù)據(jù)訪問步驟(3)用DataAdapter對象執(zhí)行SQL命令。若不用Command對象執(zhí)行SQL命令,也可用DataAdapter對象對數(shù)據(jù)庫進行操作。DataAdapter對象可用于在數(shù)據(jù)源和DataSet數(shù)據(jù)集之間交換數(shù)據(jù),它向DataSet填充數(shù)據(jù)或把DataSet數(shù)據(jù)更新回原始數(shù)據(jù)源。DataAdapter對象包含4個Command對象,分別是SelectCommand、InsertCommand、UpdateCommand和DeleteCommand,它們分別執(zhí)行Select、Insert、Update和Delete命令。9.2.4數(shù)據(jù)訪問步驟(4)顯示數(shù)據(jù)。從數(shù)據(jù)庫查詢得到的結(jié)果需要在窗體中顯示出來,可以利用數(shù)據(jù)顯示控件來實現(xiàn)。常用的數(shù)據(jù)顯示控件是DataGridView(圖標(biāo)為
)。該控件的一個重要屬性是“DataSource”,用于設(shè)置綁定的數(shù)據(jù)源,它的值可以是一個數(shù)據(jù)集合,如DataSet對象等。9.2.5數(shù)據(jù)訪問簡單實例【例9.1】用DataAdapter、DataSet對象和DataGridView控件,讀取并顯示課程數(shù)據(jù)表。將xscj.accdb數(shù)據(jù)庫文件放到特定目錄下(本例為D:\MyDocuments)。項目建立后,在設(shè)計窗口,添加一個按鈕和一個DataGridView控件用來顯示查詢結(jié)果,適當(dāng)調(diào)整該控件的大小及外觀,其他屬性都采用默認(rèn)值。在按鈕的Click事件中,實現(xiàn)數(shù)據(jù)庫連接、打開、查詢、顯示,所有與數(shù)據(jù)庫訪問有關(guān)的對象都是在代碼中創(chuàng)建,具體程序代碼。9.2.5數(shù)據(jù)訪問簡單實例本例在程序中創(chuàng)建Connection、DataAdapter、Command和DataSet對象,而不是利用控件來創(chuàng)建。程序連接并打開xscj數(shù)據(jù)庫,讀取KC表填充到DataSet對象,再將KC表在DataGridView控件中顯示輸出,運行結(jié)果如圖9.14所示。9.3DataSet應(yīng)用9.3.1DataSet及相關(guān)對象1.DataAdapter對象DataAdapter對象用來傳遞各種SQL命令,并將命令執(zhí)行結(jié)果填入DataSet對象。并且它還可將DataSet更改過的數(shù)據(jù)寫回數(shù)據(jù)源。它是數(shù)據(jù)庫與DataSet對象之間溝通的橋梁。DataAdapter怎樣向DataSet填充數(shù)據(jù)呢?如圖9.15所示。9.3.1DataSet及相關(guān)對象使用DataAdapter對象前必須先創(chuàng)建,創(chuàng)建DataAdapter對象的語法格式有如下4種:①Dim對象名
AsNewOleDbDataAdapter()②Dim對象名
AsNewOleDbDataAdapter(OleDbCommand對象)③Dim對象名
AsNewOleDbDataAdapter(SQL命令串,OleDbConnection對象)④Dim對象名
AsNewOleDbDataAdapter(SQL命令串,連接字符串)
9.3.1DataSet及相關(guān)對象例如,以下代碼使用第1種格式創(chuàng)建DataAdapter對象:DimconnAsNewOleDbConnection()DimcmdAsNewOleDbCommand()conn.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;DataSource= 'D:\MyDocuments\xscj.accdb'"conn.Open()cmd.Connection=conncmd.CommandText="Select*fromXS"DimAdptAsNewOleDbDataAdapter(cmd)再如,以下代碼使用第3種格式創(chuàng)建DataAdapter對象:DimconnAsNewOleDbConnection()conn.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;DataSource= 'D:\MyDocuments\xscj.accdb'"conn.Open()DimAdptAsNewOleDbDataAdapter("Select*fromXS",conn)9.3.1DataSet及相關(guān)對象第1種格式是在創(chuàng)建DataAdapter對象后,再賦予其連接、SQL命令等對象屬性值,第4種格式則不需先建立OleDbConnection和OleDbCommand對象即直接創(chuàng)建,例如:DimAdptAsNewOleDbDataAdapter("Select*fromXS","Provider=Microsoft.ACE.OLEDB.12.0; DataSource='D:\MyDocuments\xscj.accdb'")9.3.1DataSet及相關(guān)對象DataAdapter對象的常用屬性和方法分別列于表9.9和表9.10中。9.3.1DataSet及相關(guān)對象2.DataSet對象DataSet對象包括3個常用的集合:DataTableCollection(數(shù)據(jù)表集合,包括多個DataTable對象)、DataRowCollection(行集合,包含多個DataRow對象)和DataColumnCollection(列集合,包含多個DataColumn對象)。DataSet對象的結(jié)構(gòu)如圖9.16所示。9.3.1DataSet及相關(guān)對象必須先創(chuàng)建DataSet對象后才能使用它,創(chuàng)建的語法格式如下:Dim對象名
AsNewDataSet()Dim對象名
AsNewDataSet(數(shù)據(jù)集名)第1種格式未指出數(shù)據(jù)集名,可在創(chuàng)建DataSet對象后用DataSetName屬性來設(shè)置。例如,以下代碼定義數(shù)據(jù)集對象DS,其中包含數(shù)據(jù)表XS:DimconnAsString="Provider=Microsoft.ACE.OLEDB.12.0;DataSource= 'D:\MyDocuments\xscj.accdb'"DimObjAdptAsNewOleDbDataAdapter("Select*fromXS",conn)DimDSAsNewDataSet()'定義DataSet對象ObjAdpt.Fill(DS,"students")'填充數(shù)據(jù)集9.3.1DataSet及相關(guān)對象DataSet對象的常用屬性和方法分別列于表9.11和表9.12中。9.3.1DataSet及相關(guān)對象3.DataRelation對象創(chuàng)建DataRelation對象實例的語法格式如下:關(guān)系對象名
=NewDataRelation(關(guān)系名,DataColumn1,DataColumn2)例如,定義一個名為XS_XK的DataRelation對象,用名為tblXS和tblXK的DataTable對象中的學(xué)號字段,創(chuàng)建學(xué)生表和學(xué)生成績表之間的關(guān)系,代碼如下:XS_XK=NewDataRelation("XSXS_KC",tblXS.Columns("XH"),tblXK.Columns("XH"))
9.3.2用DataSet查詢數(shù)據(jù)庫1.簡單查詢【例9.2】分別用一個DataGridView、DataAdapter、DataSet、Connection控件和一個按鈕對象,查詢學(xué)生信息。本例題還要添加OleDbDataAdapter1控件對象,它充當(dāng)數(shù)據(jù)庫和程序之間的數(shù)據(jù)搬運者。添加OleDbDataAdapter1時,會自動彈出【數(shù)據(jù)適配器配置向?qū)А繉υ捒?;或在以后修改OleDbDataAdapter1時,在控件對象上單擊鼠標(biāo)右鍵,在彈出的菜單中選擇【配置數(shù)據(jù)適配器】,再在對話框中選擇連接,選擇數(shù)據(jù)表,生成SQL語句,如圖9.17所示。9.3.2用DataSet查詢數(shù)據(jù)庫完成數(shù)據(jù)庫連接和數(shù)據(jù)表設(shè)定后,下一步要做的工作是建立應(yīng)用程序的DataSet對象,如圖9.18所示,右擊OleDbDataAdapter1控件,選擇【生成數(shù)據(jù)集】,出現(xiàn)圖9.19的【生成數(shù)據(jù)集】對話框,勾選XS數(shù)據(jù)表前的復(fù)選框,單擊【確定】按鈕。
9.3.2用DataSet查詢數(shù)據(jù)庫然后在窗體上再添加一個DataGridView控件,作為表格的輸出,其DataSource屬性值設(shè)為XscjDataSet1,其DataMember屬性值設(shè)為XS表,如圖9.20所示,DataGridView1控件中就會出現(xiàn)XS表的各個字段。此時只有表結(jié)構(gòu),數(shù)據(jù)并沒有出現(xiàn),具體的數(shù)據(jù)在運行時才能得到,如圖9.21所示。
9.3.2用DataSet查詢數(shù)據(jù)庫上述操作添加了4個控件并完成相應(yīng)的屬性設(shè)置后,程序代碼只需簡單的一行就可以實現(xiàn)數(shù)據(jù)庫查詢了,程序代碼如下:PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesButton1.ClickOleDbDataAdapter1.Fill(XscjDataSet1)EndSub9.3.2用DataSet查詢數(shù)據(jù)庫單擊【查詢】按鈕,輸出結(jié)果如圖9.22所示。9.3.2用DataSet查詢數(shù)據(jù)庫2.條件查詢【例9.3】按學(xué)號條件查詢學(xué)生信息,要求學(xué)號和姓名欄的標(biāo)題用漢字顯示,不顯示備注字段。新建項目,在設(shè)計窗口添加一個GroupBox、一個標(biāo)簽、一個文本框(TxtXH)、一個按鈕(Button1)和一個DataGridView控件,適當(dāng)調(diào)整該控件的大小,其他屬性都采用默認(rèn)值,如圖9.23所示。9.3.2用DataSet查詢數(shù)據(jù)庫在【查詢】按鈕的Click事件中,實現(xiàn)數(shù)據(jù)庫連接、打開、查詢和顯示。若用戶輸入了學(xué)號,則按該學(xué)號進行模糊查詢,否則輸出全部記錄,具體程序代碼。在學(xué)號中輸入“0601”,單擊【查詢】按鈕,運行結(jié)果如圖9.24所示。9.3.2用DataSet查詢數(shù)據(jù)庫3.關(guān)聯(lián)表查詢【例9.4】查詢并輸出“學(xué)生”與“成績”兩個關(guān)聯(lián)數(shù)據(jù)表,要求單擊學(xué)生表的記錄時,在成績表中自動顯示該學(xué)生的各科成績。新建項目,在設(shè)計窗口添加一個【查詢】按鈕(Button1)和兩個DataGridView控件(分別用來顯示“學(xué)生表”和“成績表”),適當(dāng)調(diào)整控件大小,其他屬性采用默認(rèn)值,如圖9.25所示。9.3.2用DataSet查詢數(shù)據(jù)庫要實現(xiàn)關(guān)聯(lián)查詢,首先要建立DataAdapter、Connection、DataSet對象,同時還要建立DataRelation對象“XS_XK”;在打開數(shù)據(jù)庫連接后,分別獲取“學(xué)生”、“成績”兩個關(guān)聯(lián)數(shù)據(jù)表,建立它們之間的關(guān)系;然后將關(guān)系添加到DataSet中。所有的操作都在【查詢】按鈕的Click事件代碼中完成,程序代碼。9.3.2用DataSet查詢數(shù)據(jù)庫4.XML數(shù)據(jù)查詢【例9.5】用DataSet查詢包含“成績”數(shù)據(jù)表的XML文件。XML文檔可以用一系列的標(biāo)記,以文本方式描述數(shù)據(jù),如Access的數(shù)據(jù)表,可以另存為XML格式的文件。右擊KC:表,從快捷菜單中選擇【導(dǎo)出】→【XML文件】,指定目標(biāo)路徑,如圖9.26所示。9.3.2用DataSet查詢數(shù)據(jù)庫本例用到的文件“KC.xml”存放在D:\MyDocuments\目錄中,XML源文件。新建項目,在設(shè)計窗口添加一個【XML表格】按鈕(Button1)、一個【XML原文】按鈕(Button2)、一個多行文本框(Textbox1)和一個DataGridView控件,適當(dāng)調(diào)整控件大小,其他屬性采用默認(rèn)值,如圖9.27所示。9.3.2用DataSet查詢數(shù)據(jù)庫下面是【XML表格】和【XML原文】按鈕的單擊事件代碼:DimKCxmlAsNewDataSetPrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesButton1.ClickKCxml.Clear()KCxml.ReadXml("D:\MyDocuments\KC.xml")WithDataGridView1.DataSource=KCxml.DataMember="KC"EndWithEndSub
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesButton2.ClickDimswXMLAsNewSystem.IO.StringWriterKCxml.WriteXmlSchema(swXML)TextBox1.Text=swXML.ToStringEndSub9.3.3用DataAdapter對象更新數(shù)據(jù)庫【例9.6】通過DataAdapter對象維護“學(xué)生”表記錄。新建項目,在窗體上布置一個DataGridView控件作為學(xué)生數(shù)據(jù)表的輸出;若干標(biāo)簽、文本框、組合框和一個DateTimePicker控件,用于顯示學(xué)生明細(xì)信息;3個Button分別實現(xiàn)添加、修改和刪除學(xué)生記錄操作。另外,數(shù)據(jù)操作的Connection、DataAdapter、Command和DataSet對象在程序中添加。窗體中主要控件及對象屬性見表9.13。9.3.3用DataAdapter對象更新數(shù)據(jù)庫設(shè)計效果見圖9.28。9.3.3用DataAdapter對象更新數(shù)據(jù)庫功能設(shè)計:當(dāng)加載窗體后,將讀取學(xué)生表并添加到DataSet對象中,同時在DataGridView中顯示學(xué)生記錄。當(dāng)選擇學(xué)生記錄時,在下面的各文本框、組合框中顯示相應(yīng)學(xué)生的詳細(xì)數(shù)據(jù),同時可在其中修改和添加記錄。【添加】按鈕的功能是將各文本框、組合框等對象中輸入的值作為一條新記錄添加到物理數(shù)據(jù)庫中;【修改】按鈕的功能是將各文本框、組合框等對象中輸入的值作為DataGridView中當(dāng)前選擇的記錄寫入物理數(shù)據(jù)庫;【刪除】按鈕的功能是將DataGridView中當(dāng)前選擇的記錄從物理數(shù)據(jù)庫中刪除。當(dāng)進行添加、修改、刪除操作時,均彈出“確認(rèn)”對話框提示用戶。9.3.3用DataAdapter對象更新數(shù)據(jù)庫為便于所有過程對數(shù)據(jù)庫的訪問,在窗體層定義3個全局變量,分別是一個數(shù)據(jù)集DataSet對象、一個學(xué)生表DataTable對象、一個OleDbDataAdapter對象。同時還定義兩個全局過程,其中refreshdata過程用于更新物理數(shù)據(jù)庫并刷新窗體中的數(shù)據(jù)顯示,bindgridview過程用于讀取數(shù)據(jù)庫并顯示數(shù)據(jù)。程序代碼。9.3.3用DataAdapter對象更新數(shù)據(jù)庫當(dāng)窗體加載時,要在DataGridView中顯示學(xué)生數(shù)據(jù)表,因此在窗體Load事件代碼中調(diào)用bindgridview過程,讀取學(xué)生表并顯示記錄。程序代碼如下:PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesMyBase.Loadbindgridview()txtStuXH.Text=DataGridView1.CurrentRow.Cells.Item(0).Value.ToString '顯示學(xué)號txtStuXM.Text=DataGridView1.CurrentRow.Cells.Item(1).Value.ToString '顯示姓名txtStuZXF.Text=DataGridView1.CurrentRow.Cells.Item(5).Value.ToString '顯示總學(xué)分cbxStuXB.Text=DataGridView1.CurrentRow.Cells.Item(3).Value.ToString '顯示性別cbxStuZYM.Text=DataGridView1.CurrentRow.Cells.Item(2).Value.ToString '顯示專業(yè)dtpStuCSSJ.Text=DataGridView1.CurrentRow.Cells.Item(4).Value.ToString '顯示出生日期txtStuBZ.Text=DataGridView1.CurrentRow.Cells.Item(6).Value.ToString '顯示備注EndSub9.3.3用DataAdapter對象更新數(shù)據(jù)庫當(dāng)用戶選擇DataGridView中的學(xué)生記錄時,會觸發(fā)CellClick事件,在下面的各文本框、組合框中顯示相應(yīng)學(xué)生的詳細(xì)數(shù)據(jù),程序代碼如下:PrivateSubDataGridView1_CellClick(ByValsenderAsSystem.Object,ByValeAsSystem.Windows.Forms.DataGridViewCellEventArgs)HandlesDataGridView1.CellClicktxtStuXH.Text=DataGridView1.CurrentRow.Cells.Item(0).Value.ToString '顯示學(xué)號txtStuXM.Text=DataGridView1.CurrentRow.Cells.Item(1).Value.ToString '顯示姓名txtStuZXF.Text=DataGridView1.CurrentRow.Cells.Item(5).Value.ToString '顯示總學(xué)分cbxStuXB.Text=DataGridView1.CurrentRow.Cells.Item(3).Value.ToString '顯示性別cbxStuZYM.Text=DataGridView1.CurrentRow.Cells.Item(2).Value.ToString '顯示專業(yè)dtpStuCSSJ.Text=DataGridView1.CurrentRow.Cells.Item(4).Value.ToString '顯示出生日期txtStuBZ.Text=DataGridView1.CurrentRow.Cells.Item(6).Value.ToString '顯示備注EndSub9.3.3用DataAdapter對象更新數(shù)據(jù)庫在【添加】按鈕的Click事件代碼中,先彈出“確認(rèn)”對話框要求用戶確認(rèn),若確認(rèn)則創(chuàng)建一個新的記錄對象,將用戶輸入的數(shù)據(jù)分別填入記錄對象相應(yīng)的字段中,然后再將新記錄添加到DataSet對象的學(xué)生表中,最后調(diào)用refreshdata過程寫入物理數(shù)據(jù)庫并刷新顯示。程序代碼如下:PrivateSubbtnAdd_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesbtnAdd.ClickDimresponseAsMsgBoxResultresponse=MsgBox("確實要添加記錄嗎?",vbOKCancel+vbQuestion,"系統(tǒng)提示")Ifresponse=MsgBoxResult.OkThen '用戶選擇“確定”DimmyRowAsDataRow=objXSTable.NewRow()
myRow("學(xué)號")=txtStuXH.TextmyRow("姓名")=txtStuXM.TextmyRow("ZXF")=txtStuZXF.TextmyRow("XB")=cbxStuXB.TextmyRow("ZYM")=cbxStuZYM.TextmyRow("BZ")=txtStuBZ.TextmyRow("CSSJ")=CDate(dtpStuCSSJ.Text)objXSTable.Rows.Add(myRow) '向?qū)W生表添加記錄refreshdata() '更新并刷新顯示EndIfEndSub9.3.3用DataAdapter對象更新數(shù)據(jù)庫在【修改】按鈕的Click事件代碼中,先彈出“確認(rèn)”對話框要求用戶確認(rèn),若確認(rèn)則將使用用戶輸入的數(shù)據(jù)對DataSet學(xué)生表的當(dāng)前記錄對象相應(yīng)的字段分別進行修改,然后再調(diào)用refreshdata過程寫入物理數(shù)據(jù)庫并刷新顯示。程序代碼。9.3.3用DataAdapter對象更新數(shù)據(jù)庫在【刪除】按鈕的Click事件代碼中,先彈出“確認(rèn)”對話框要求用戶確認(rèn),若確認(rèn)則將用戶選擇的DataSet學(xué)生表中的當(dāng)前記錄刪除,然后再調(diào)用refreshdata過程寫入物理數(shù)據(jù)庫并刷新顯示。程序代碼如下:PrivateSubbtnDelete_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesbtnDelete.ClickDimresponseAsMsgBoxResultresponse=MsgBox("確實要刪除記錄嗎?",vbOKCancel+vbQuestion,"系統(tǒng)提示")Ifresponse=MsgBoxResult.OkThen '用戶選擇“確定”objXSTable.Rows.Item(DataGridView1.CurrentRow.Index).Delete() '刪除當(dāng)前記錄refreshdata() '更新并刷新顯示EndIfEndSub9.3.3用DataAdapter對象更新數(shù)據(jù)庫程序運行后,若選擇記錄并刪除,效果如圖9.29所示。9.4綜合應(yīng)用【例9.7】查詢學(xué)生信息并維護學(xué)生表記錄。本例是在例9.6的基礎(chǔ)上,增加按學(xué)號查詢學(xué)生信息功能,縮小學(xué)生記錄的范圍,方便用戶維護。新建項目,在窗體上設(shè)計一個分組框并在其中布置一個文本框和一個查詢按鈕,在窗體中布置一個DataGridView作為學(xué)生數(shù)據(jù)表的輸出,若干標(biāo)簽、文本框、組合框和一個DateTimePicker控件,用于顯示學(xué)生明細(xì)信息,3個Button分別實現(xiàn)添加、修改和刪除學(xué)生記錄;另外,數(shù)據(jù)操作的Connection、DataAdapter、Command和DataSet對象在程序中添加。9.4綜合應(yīng)用窗體中主要控件及對象屬性見表9.14。9.4綜合應(yīng)用界面設(shè)計的布局如圖9.30所示。9.4綜合應(yīng)用功能設(shè)計:加載窗體后,讀取學(xué)生表的全部記錄并添加到DataSet對象中,同時在DataGridView中顯示全部學(xué)生記錄。當(dāng)單擊“查詢”按鈕時,將按用戶輸入的學(xué)號進行模糊查詢,篩選出符合條件的學(xué)生記錄,并在DataGridView中顯
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴陽職業(yè)技術(shù)學(xué)院《試驗設(shè)計與數(shù)據(jù)處理》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025上海市安全員-C證考試(專職安全員)題庫附答案
- 2025江蘇省安全員《B證》考試題庫及答案
- 2025海南省建筑安全員C證考試(專職安全員)題庫附答案
- 廣州中醫(yī)藥大學(xué)《形體訓(xùn)練(Ⅱ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州應(yīng)用科技學(xué)院《環(huán)境藝術(shù)專題設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州現(xiàn)代信息工程職業(yè)技術(shù)學(xué)院《運動解剖學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州鐵路職業(yè)技術(shù)學(xué)院《針織物設(shè)計與試織》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025四川建筑安全員B證(項目經(jīng)理)考試題庫
- 2025年福建建筑安全員《A證》考試題庫及答案
- 2024年股東股權(quán)繼承轉(zhuǎn)讓協(xié)議3篇
- 2025年中央歌劇院畢業(yè)生公開招聘11人歷年高頻重點提升(共500題)附帶答案詳解
- 北京市高校課件 開天辟地的大事變 中國近代史綱要 教學(xué)課件
- 監(jiān)事會年度工作計劃
- 2024年認(rèn)證行業(yè)法律法規(guī)及認(rèn)證基礎(chǔ)知識
- SVG無功補償培訓(xùn)
- 新生兒聽力篩查技術(shù)規(guī)范衛(wèi)生部2010年版
- 大貓英語分級閱讀 六級1 Arthur's Fantastic Party課件
- SCA自動涂膠系統(tǒng)培訓(xùn)講義
- LEC法取值標(biāo)準(zhǔn)對照表
- 華中數(shù)控車床編程及操作
評論
0/150
提交評論