版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
學(xué)生信息管理系統(tǒng)任務(wù)1:連接數(shù)據(jù)庫(kù)任務(wù)2:添加、刪除學(xué)生信息任務(wù)3:查詢(xún)、修改學(xué)生信息項(xiàng)目八利用C#和數(shù)據(jù)庫(kù)編程,編寫(xiě)學(xué)生信息管理系統(tǒng)。要求用多文檔窗體實(shí)現(xiàn)學(xué)生信息的增加、按學(xué)號(hào)刪除學(xué)生、修改學(xué)生信息和顯示所有學(xué)生信息的功能。ADO.NET是.NETFramework用于訪問(wèn)數(shù)據(jù)庫(kù)的一種技術(shù)。Microsoft通過(guò)ADO.NET向編程人員提供了功能強(qiáng)大的數(shù)據(jù)訪問(wèn)能力,既可以直接在編程模式下通過(guò)輸入程序代碼設(shè)計(jì)數(shù)據(jù)訪問(wèn)程序,也可以利用系統(tǒng)提供的數(shù)據(jù)訪問(wèn)向?qū)е苯舆M(jìn)行可視化程序設(shè)計(jì)。通過(guò)本項(xiàng)目設(shè)計(jì),主要介紹ADO.NET的概念及其對(duì)象等有關(guān)數(shù)據(jù)庫(kù)訪問(wèn)的內(nèi)容。項(xiàng)目引入熟悉ADO.NET概述和功能掌握.NETFramework數(shù)據(jù)提供程序核心對(duì)象掌握理解并使用記錄集(DataSet)對(duì)象掌握理解并使用DataGridView顯示和操作數(shù)據(jù)庫(kù)
學(xué)習(xí)目標(biāo)學(xué)生信息管理系統(tǒng)要求利用C#和ADO.NET編程,使用多文檔窗體實(shí)現(xiàn)學(xué)生信息的增加、按學(xué)號(hào)刪除學(xué)生、修改學(xué)生信息和顯示所有學(xué)生信息的功能,系統(tǒng)主界面效果如圖8-1所示:項(xiàng)目描述單擊主窗體菜單的添加學(xué)生信息菜單,彈出添加學(xué)生信息窗體,效果如圖8-2所示:此時(shí),用戶(hù)輸入要添加的學(xué)生信息,單擊“添加”按鈕,彈出”學(xué)生信息添加成功!”消息框,單擊“關(guān)閉”按鈕,關(guān)閉本窗體,效果如圖8-3所示:項(xiàng)目描述單擊主窗體菜單的刪除學(xué)生信息菜單,彈出刪除學(xué)生信息窗體,單擊“關(guān)閉”按鈕,關(guān)閉本窗體。效果如圖8-4所示:如果輸入的學(xué)號(hào)存在,則刪除該記錄,并給出提示:[刪除成功]。效果如圖8-5所示:項(xiàng)目描述如果輸入的學(xué)號(hào)不存在,要給出提示:[學(xué)號(hào)不存在,無(wú)法刪除]。效果如圖8-6所示:?jiǎn)螕糁鞔绑w菜單的查看學(xué)生信息菜單,彈出顯示所有學(xué)生信息窗體。窗體中列名必須是中文,該窗體只能顯示,不能進(jìn)行添加或修改或刪除操作。效果如圖8-7所示:項(xiàng)目描述單擊主窗體菜單的修改學(xué)生信息菜單,彈出修改學(xué)生信息窗體。窗體加載時(shí),下方的列表顯示所有學(xué)生信息,用戶(hù)選中某行數(shù)據(jù),將數(shù)據(jù)顯示在上方對(duì)應(yīng)文本框中,供用戶(hù)修改
窗體中列名必須是中文。效果如圖8-8所示:用戶(hù)在上方文本框中修改完數(shù)據(jù),點(diǎn)擊“修改”按鈕,則修改該記錄,并給出提示:[修改記錄成功!]。點(diǎn)擊“關(guān)閉”按鈕,關(guān)閉本窗體。效果如圖8-9所示:項(xiàng)目描述任務(wù)1:連接數(shù)據(jù)庫(kù)任務(wù)2:添加、刪除學(xué)生信息任務(wù)3:查詢(xún)、修改學(xué)生信息工作任務(wù)任務(wù)描述
要完成學(xué)生信息管理系統(tǒng)功能,首先必須要連接后臺(tái)數(shù)據(jù)庫(kù),實(shí)現(xiàn)對(duì)學(xué)生信息的增、刪、改、查操作。任務(wù)1連接數(shù)據(jù)庫(kù)1.
ADO.NET知識(shí)引入任務(wù)1連接數(shù)據(jù)庫(kù)(1)ADO.NET概述ADO.NET是一個(gè)以.NET框架為基礎(chǔ)的全新的數(shù)據(jù)操作模型,是專(zhuān)門(mén)為.NET平臺(tái)上的數(shù)據(jù)訪問(wèn)而設(shè)計(jì)的,更適用于分布式和Internet訪問(wèn)等大型應(yīng)用程序的開(kāi)發(fā),也可使程序設(shè)計(jì)人員以更方便、直觀的方式來(lái)存取數(shù)據(jù)。ADO.NET由MicrosoftActiveXDataObjects(ADO)改進(jìn)而來(lái),它提供平臺(tái)互用和可收縮的數(shù)據(jù)訪問(wèn)功能,它是微軟開(kāi)發(fā)的一個(gè)COM組件庫(kù),ADO主要包括Connection、Command、Recordset和Field對(duì)象。使用ADO時(shí),要打開(kāi)數(shù)據(jù)庫(kù)的連接,把一些數(shù)據(jù)選出來(lái),放在記錄集中,這些數(shù)據(jù)由字段組成,接著處理這些數(shù)據(jù),并在服務(wù)器上進(jìn)行更新,最后關(guān)閉連接。ADO.NET的作用與ADO相同,提供易于使用的類(lèi)集,以訪問(wèn)數(shù)據(jù),ADO.NET的功能得到更新數(shù)據(jù)和增強(qiáng),可以用于.NET編程環(huán)境。1.
ADO.NET知識(shí)引入任務(wù)1連接數(shù)據(jù)庫(kù)(2)ADO.NET的作用ADO.NET的主要目標(biāo)是提供對(duì)關(guān)系數(shù)據(jù)的簡(jiǎn)單訪問(wèn)功能。顯然,易于使用的類(lèi)表示關(guān)系數(shù)據(jù)庫(kù)中的表、列和行,另外,ADO.NET引入了DataSet類(lèi),它代表來(lái)自封裝在一個(gè)單元中的關(guān)聯(lián)表中的一組數(shù)據(jù),并維持它們之間完整的關(guān)系。最常見(jiàn)的一個(gè)模型是三層模型,如下所示。數(shù)據(jù)層:包括數(shù)據(jù)庫(kù)和數(shù)據(jù)訪問(wèn)代碼。業(yè)務(wù)層:包含業(yè)務(wù)邏輯,定義應(yīng)用程序的獨(dú)特功能,并把該功能與其他層分離開(kāi)來(lái),這個(gè)層有時(shí)也稱(chēng)為中間層顯示層:提供用戶(hù)界面,控制應(yīng)用程序的流程,對(duì)用戶(hù)輸入進(jìn)行驗(yàn)證等等。1.
ADO.NET知識(shí)引入任務(wù)1連接數(shù)據(jù)庫(kù)(3)ADO.NET的結(jié)構(gòu)1.
ADO.NET知識(shí)引入任務(wù)1連接數(shù)據(jù)庫(kù)(4).NETFramework數(shù)據(jù)提供程序的核心對(duì)象Connection對(duì)象ADOConnection對(duì)象用于創(chuàng)建一個(gè)到達(dá)某個(gè)數(shù)據(jù)源的開(kāi)放連接。通過(guò)此連接,您可以對(duì)一個(gè)數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn)和操作。Command對(duì)象ADOCommand對(duì)象用于執(zhí)行面向數(shù)據(jù)庫(kù)的一次簡(jiǎn)單查詢(xún)。此查詢(xún)可執(zhí)行諸如創(chuàng)建、添加、取回、刪除或更新記錄等動(dòng)作。DataReader對(duì)象這是一個(gè)快速而易用的對(duì)象,可以從數(shù)據(jù)源中操作只讀只進(jìn)的數(shù)據(jù)流。DataAdapter對(duì)象DataAdapter提供連接DataSet對(duì)象和數(shù)據(jù)源的橋梁。2.ADO.NET訪問(wèn)數(shù)據(jù)庫(kù)知識(shí)引入任務(wù)1連接數(shù)據(jù)庫(kù)(1)連接數(shù)據(jù)庫(kù)(Connection)Connection對(duì)象用于在應(yīng)用程序和數(shù)據(jù)庫(kù)之間建立連接,每個(gè).NET數(shù)據(jù)提供程序都有其自己的連接類(lèi)。具體實(shí)例化哪個(gè)特定的連接類(lèi),取決于所使用的.NET數(shù)據(jù)提供程序。數(shù)據(jù)提供程序連接類(lèi)SQL數(shù)據(jù)提供程序SqlConnectionOLEDB數(shù)據(jù)提供程序OleDbConnectionOracle數(shù)據(jù)提供程序OracleConnectionODBC數(shù)據(jù)提供程序OdbcConnection屬
性說(shuō)
明ConnectionString指定連接數(shù)據(jù)庫(kù)所需的值的字符串格式描述Database與Connection對(duì)象連接的數(shù)據(jù)庫(kù)方
法說(shuō)
明Open打開(kāi)與數(shù)據(jù)庫(kù)的連接,以允許對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)進(jìn)行事務(wù)處理Close關(guān)閉與數(shù)據(jù)庫(kù)的連接。關(guān)閉后,不能對(duì)數(shù)據(jù)庫(kù)進(jìn)行事務(wù)處理任務(wù)1
連接數(shù)據(jù)庫(kù)任務(wù)實(shí)現(xiàn)【例8-1】設(shè)計(jì)一個(gè)窗體,使用Connection對(duì)象連接學(xué)生信息管理系統(tǒng)后臺(tái)數(shù)據(jù)庫(kù)StudentDB,運(yùn)行效果如圖所示:任務(wù)1
連接數(shù)據(jù)庫(kù)任務(wù)實(shí)現(xiàn)【例8-1】privatevoidbutton1_Click(objectsender,EventArgse){//第一步:定義連接字符串stringstrConn="server=.;uid=sa;pwd=123456ab78;database=studentDB";//第二步:創(chuàng)建連接對(duì)象SqlConnectionsqlConn=newSqlConnection(strConn);try{//第三步:打開(kāi)連接對(duì)象sqlConn.Open();MessageBox.Show("數(shù)據(jù)庫(kù)連接成功!");}catch(Exceptionex){//處理異常MessageBox.Show("異常信息:\n"+ex.Message);}finally{//第四步:關(guān)閉連接對(duì)象sqlConn.Close();}}.NETframework中的ADO.NET是一組類(lèi),允許應(yīng)用程序與數(shù)據(jù)庫(kù)交互,以便檢索和更新信息。DataSet和.NET數(shù)據(jù)提供程序是ADO.NET的兩個(gè)主要組件。每種.NET數(shù)據(jù)提供程序都是由以下四個(gè)對(duì)象組成:Connection,Command,DataAdapter以及DataReader。Connection對(duì)象用于在應(yīng)用程序和數(shù)據(jù)庫(kù)之間建立連接。任務(wù)1
連接數(shù)據(jù)庫(kù)任務(wù)小結(jié)任務(wù)描述單擊主窗體菜單的添加、刪除學(xué)生信息菜單,分別實(shí)現(xiàn)對(duì)學(xué)生信息的添加和刪除功能,如果添加成功,則彈出“學(xué)生信息添加成功!”消息框,單擊該窗體“關(guān)閉”按鈕,關(guān)閉該窗體;刪除學(xué)生信息時(shí),如果輸入的學(xué)號(hào)存在,則刪除該記錄,并彈出“刪除成功!”消息框,如果輸入的學(xué)號(hào)不存在,則彈出“學(xué)號(hào)不存在,無(wú)法刪除!”消息框,單擊該窗體“關(guān)閉”按鈕,關(guān)閉該窗體。任務(wù)2
添加、刪除學(xué)生信息1.執(zhí)行SQL語(yǔ)句(Command)我們可以使用Command對(duì)象允許向數(shù)據(jù)庫(kù)傳遞SQL腳本,以便檢索和操作數(shù)據(jù)庫(kù)中的數(shù)據(jù)。任務(wù)2添加、刪除學(xué)生信息知識(shí)引入數(shù)據(jù)提供程序命令類(lèi)SQL數(shù)據(jù)提供程序SqlCommandOLEDB數(shù)據(jù)提供程序OleDbCommandOracle數(shù)據(jù)提供程序OracleCommandODBC數(shù)據(jù)提供程序OdbcCommand屬
性說(shuō)
明CommandText表示Command對(duì)象將執(zhí)行的SQL語(yǔ)句或存儲(chǔ)過(guò)程CommandType表示Command對(duì)象的命令類(lèi)型,包括StoreProcedure、Text和TableDirect。其中:StoreProcedure表示執(zhí)行T-SQL存儲(chǔ)過(guò)程,Text表示執(zhí)行T-SQL語(yǔ)句Connection表示Command對(duì)象使用的活動(dòng)連接方
法說(shuō)
明ExecuteNonQuery用于Command對(duì)象執(zhí)行T-SQL的語(yǔ)句,對(duì)數(shù)據(jù)庫(kù)的單項(xiàng)操作,如UPDATE,INSERT,DELETE。返回影響的行數(shù)ExecuteReader用于Command對(duì)象執(zhí)行T-SQL的語(yǔ)句,對(duì)數(shù)據(jù)庫(kù)的查詢(xún)操作,趕回一個(gè)DataReader對(duì)象。1.設(shè)計(jì)添加學(xué)生信息窗體(AddStudInfo.cs),效果如圖8-3所示,窗體后臺(tái)程序代碼如下:privatevoidbtnAdd_Click(objectsender,EventArgse){//數(shù)據(jù)庫(kù)連接字符串stringstrConn="server=.;uid=sa;pwd=123456ab78;database=studentDB";//連接數(shù)據(jù)庫(kù)SqlConnectionsqlConn=newSqlConnection(strConn);/**************獲取用戶(hù)在界面上輸入的數(shù)據(jù)*************/stringstuId=txtStuId.Text;stringstuName=txtStuName.Text;stringstuBirthday=dtpBirthday.Value.ToString();stringstuSex=cmbSex.Text;stringstuAddress=txtStuAddress.Text;/*****************執(zhí)行SQL語(yǔ)句***************/stringstrsql=string.Format("insertintostudentvalues('{0}','{1}','{2}','{3}','{4}')",stuId,stuName,stuSex,stuBirthday,stuAddress);任務(wù)2添加、刪除學(xué)生信息任務(wù)實(shí)現(xiàn)//創(chuàng)建命令對(duì)象,執(zhí)行SQL語(yǔ)句SqlCommandcmd=newSqlCommand(strsql,sqlConn);//執(zhí)行SQL語(yǔ)句try{sqlConn.Open();intn=cmd.ExecuteNonQuery();//執(zhí)行SQL語(yǔ)句,得到受影響的行數(shù)if(n>0){MessageBox.Show("學(xué)生信息添加成功!");}else{MessageBox.Show("學(xué)生信息添加失敗!");}}catch(Exceptionex){MessageBox.Show("出現(xiàn)異常,原因:\n"+ex);}finally{sqlConn.Close();}}1.設(shè)計(jì)添加學(xué)生信息窗體(AddStudInfo.cs),效果如圖8-3所示,窗體后臺(tái)程序代碼如下:privatevoidbtnAdd_Click(objectsender,EventArgse){//數(shù)據(jù)庫(kù)連接字符串stringstrConn="server=.;uid=sa;pwd=123456ab78;database=studentDB";//連接數(shù)據(jù)庫(kù)SqlConnectionsqlConn=newSqlConnection(strConn);/**************獲取用戶(hù)在界面上輸入的數(shù)據(jù)*************/stringstuId=txtStuId.Text;stringstuName=txtStuName.Text;stringstuBirthday=dtpBirthday.Value.ToString();stringstuSex=cmbSex.Text;stringstuAddress=txtStuAddress.Text;/*****************執(zhí)行SQL語(yǔ)句***************/stringstrsql=string.Format("insertintostudentvalues('{0}','{1}','{2}','{3}','{4}')",stuId,stuName,stuSex,stuBirthday,stuAddress);任務(wù)2添加、刪除學(xué)生信息任務(wù)實(shí)現(xiàn)//創(chuàng)建命令對(duì)象,執(zhí)行SQL語(yǔ)句SqlCommandcmd=newSqlCommand(strsql,sqlConn);//執(zhí)行SQL語(yǔ)句try{sqlConn.Open();intn=cmd.ExecuteNonQuery();//執(zhí)行SQL語(yǔ)句,得到受影響的行數(shù)if(n>0){MessageBox.Show("學(xué)生信息添加成功!");}else{MessageBox.Show("學(xué)生信息添加失?。?);}}catch(Exceptionex){MessageBox.Show("出現(xiàn)異常,原因:\n"+ex);}finally{sqlConn.Close();}}//關(guān)閉按鈕單擊事件代碼如下:privatevoidbtnClose_Click(objectsender,EventArgse){this.Close();}2.設(shè)計(jì)刪除學(xué)生信息窗體(DelStudInfo.cs),效果如圖8-5所示,窗體后臺(tái)程序代碼如下:privatevoidbtnDel_Click(objectsender,EventArgse){//獲取界面要?jiǎng)h除的學(xué)號(hào)stringstuID=txtStuId.Text;//數(shù)據(jù)庫(kù)連接字符串stringstrConn="server=.;uid=sa;pwd=123456ab78;database=studentDB";//連接數(shù)據(jù)庫(kù)SqlConnectionsqlConn=newSqlConnection(strConn);//寫(xiě)SQL語(yǔ)句stringstrSql=string.Format("deletefromstudentwherestuID='{0}'",stuID);//創(chuàng)建命令對(duì)象SqlCommandsqlCmd=newSqlCommand(strSql,sqlConn);任務(wù)2添加、刪除學(xué)生信息任務(wù)實(shí)現(xiàn)//執(zhí)行SQL語(yǔ)句try{sqlConn.Open();intn=sqlCmd.ExecuteNonQuery();if(n>0){MessageBox.Show("刪除成功!");}else{MessageBox.Show("學(xué)號(hào)不存在,無(wú)法刪除!");}}catch(Exceptionex){MessageBox.Show("出現(xiàn)異常,原因:\n"+ex);}finally{sqlConn.Close();}}2.設(shè)計(jì)刪除學(xué)生信息窗體(DelStudInfo.cs),效果如圖8-5所示,窗體后臺(tái)程序代碼如下:privatevoidbtnDel_Click(objectsender,EventArgse){//獲取界面要?jiǎng)h除的學(xué)號(hào)stringstuID=txtStuId.Text;//數(shù)據(jù)庫(kù)連接字符串stringstrConn="server=.;uid=sa;pwd=123456ab78;database=studentDB";//連接數(shù)據(jù)庫(kù)SqlConnectionsqlConn=newSqlConnection(strConn);//寫(xiě)SQL語(yǔ)句stringstrSql=string.Format("deletefromstudentwherestuID='{0}'",stuID);//創(chuàng)建命令對(duì)象SqlCommandsqlCmd=newSqlCommand(strSql,sqlConn);任務(wù)2添加、刪除學(xué)生信息任務(wù)實(shí)現(xiàn)//執(zhí)行SQL語(yǔ)句try{sqlConn.Open();intn=sqlCmd.ExecuteNonQuery();if(n>0){MessageBox.Show("刪除成功!");}else{MessageBox.Show("學(xué)號(hào)不存在,無(wú)法刪除!");}}catch(Exceptionex){MessageBox.Show("出現(xiàn)異常,原因:\n"+ex);}finally{sqlConn.Close();}}Command對(duì)象允許向數(shù)據(jù)庫(kù)傳遞請(qǐng)求、檢索和操縱數(shù)據(jù)庫(kù)中的數(shù)據(jù)。用于查詢(xún)的Command和用于執(zhí)行非查詢(xún)的Command在使用上的異同。任務(wù)小結(jié)任務(wù)2添加、刪除學(xué)生信息單擊主窗體菜單的查看學(xué)生信息菜單,彈出顯示所有學(xué)生信息窗體。窗體中列名必須是中文,該窗體只能顯示,不能進(jìn)行添加或修改或刪除操作。單擊主窗體菜單的修改學(xué)生信息菜單,彈出修改學(xué)生信息窗體。窗體加載時(shí),下方的列表顯示所有學(xué)生信息,用戶(hù)選中某行數(shù)據(jù),將數(shù)據(jù)顯示在上方對(duì)應(yīng)文本框中,供用戶(hù)修改,其中顯示學(xué)號(hào)文本框中加載的學(xué)號(hào)是主鍵,不允許修改,窗體中列名必須是中文。任務(wù)描述任務(wù)3查詢(xún)、修改學(xué)生信息1.DataSet對(duì)象知識(shí)引入任務(wù)3查詢(xún)、修改學(xué)生信息DataSet是ADO.NET結(jié)構(gòu)的主要組件,它是從數(shù)據(jù)源中檢索到的數(shù)據(jù)在內(nèi)存中的緩存。DataSet由一組DataTable對(duì)象組成,您可使這些對(duì)象與DataRelation對(duì)象互相關(guān)聯(lián)。1.DataSet對(duì)象知識(shí)引入任務(wù)3查詢(xún)、修改學(xué)生信息類(lèi)說(shuō)
明DataTableCollection包含特定數(shù)據(jù)集的所有DataTable對(duì)象DataTable表示數(shù)據(jù)集中的一個(gè)表DataColumnCollection表示DataTable對(duì)象的結(jié)構(gòu)DataRowCollection表示DataTable對(duì)象中的實(shí)際數(shù)據(jù)行DataColumn表示DataTable對(duì)象中列的結(jié)構(gòu)DataRow表示DataTable對(duì)象中的一個(gè)數(shù)據(jù)行1.DataSet對(duì)象知識(shí)引入任務(wù)3查詢(xún)、修改學(xué)生信息創(chuàng)建數(shù)據(jù)集使用DataSet構(gòu)造函數(shù)創(chuàng)建數(shù)據(jù)集實(shí)例。數(shù)據(jù)集的名稱(chēng)是可選的,不需要指定。如果沒(méi)有指定名稱(chēng),則創(chuàng)建的數(shù)據(jù)集的默認(rèn)名稱(chēng)為NewDataSet。例如分別創(chuàng)建名稱(chēng)為StudentInfo的數(shù)據(jù)集和不指定名稱(chēng)的數(shù)據(jù)集:DataSetstuDataSet=newDataSet(“StudentInfo”);DataSetstuDataSet=newDataSet();屬
性說(shuō)
明DataSetName用于獲取或設(shè)置當(dāng)前數(shù)據(jù)集的名稱(chēng)Tables用于檢索數(shù)據(jù)集中包含的表集合方
法說(shuō)
明Clear清除數(shù)據(jù)集中包含的所有表的所有行HasChanges返回一個(gè)布爾值,指示數(shù)據(jù)集是否更改1.DataSet對(duì)象知識(shí)引入任務(wù)3查詢(xún)、修改學(xué)生信息DataSet類(lèi)的最常用屬性是Tables。Tables屬性值是一個(gè)DataTable對(duì)象集,也就是DataSet中所有“表”的集合,每個(gè)DataTable對(duì)象代表從數(shù)據(jù)庫(kù)檢索到的一個(gè)表。屬
性說(shuō)
明Columns表示列的集合或DataTable包含的DataColumnConstraints表示特定的DataTable的約束集合DataSet表示DataTable所屬的數(shù)據(jù)集PrimaryKey表示作為DataTable主鍵的字段或DataColumnRows表示行的集合或DataTable包含的DataRowHasChanges返回一個(gè)布爾值,指示數(shù)據(jù)表是否更改方
法說(shuō)
明AcceptChanges提交對(duì)該表所做的所有修改NewRow添加新的DataRow事
件說(shuō)
明ColumnChanged修改該列中的值時(shí)激發(fā)該事件RowChanged修改該行中的值時(shí)激發(fā)該事件RowDeleted成功刪除行時(shí)激發(fā)該事件1.DataSet對(duì)象知識(shí)引入任務(wù)3查詢(xún)、修改學(xué)生信息【例8-6】創(chuàng)建DataSet和DataTable,向DataTable中添加數(shù)據(jù),并檢索顯示DataTable中的數(shù)據(jù),代碼如下:privatevoidFrmDS_Load(objectsender,EventArgse){//DataSetds_Stu=newDataSet("student");//創(chuàng)建名為ds_Stu的數(shù)據(jù)集DataSetds_Stu=newDataSet();//創(chuàng)建DataTable(表)對(duì)象,并指定其名為stuInfoDataTabledt_Stu=newDataTable("stuInfo");ds_Stu.Tables.Add(dt_Stu);/*//創(chuàng)建數(shù)據(jù)列DataColumndc_Stu=newDataColumn();dc_Stu.DataType=typeof(string);//設(shè)置該數(shù)據(jù)列的數(shù)據(jù)類(lèi)型dc_Stu.ColumnName="stuNo";//設(shè)置該數(shù)據(jù)列的名稱(chēng)dt_Stu.Columns.Add(dc_Stu);//將該列添加到數(shù)據(jù)表中*/1.DataSet對(duì)象知識(shí)引入任務(wù)3查詢(xún)、修改學(xué)生信息【例8-6】創(chuàng)建DataSet和DataTable,向DataTable中添加數(shù)據(jù),并檢索顯示DataTable中的數(shù)據(jù),代碼如下://創(chuàng)建數(shù)據(jù)列并添加到DataTable(數(shù)據(jù)表)中DataColumndc_Stu=dt_Stu.Columns.Add("stuNo",typeof(string));dt_Stu.Columns.Add("stuName",typeof(string));dt_Stu.Columns.Add("stuSex",typeof(string));dt_Stu.Columns.Add("stuAge",typeof(int));dt_Stu.Columns.Add("stuBirth",typeof(DateTime));//設(shè)置數(shù)據(jù)表中的主鍵列dt_Stu.PrimaryKey=newDataColumn[]{dt_Stu.Columns["stuNo"]};//定義數(shù)據(jù)行DataRowdr_Stu;//注:只能定義,不能用new關(guān)鍵字實(shí)例化dr_Stu=dt_Stu.NewRow();//在數(shù)據(jù)表中新創(chuàng)建一行記錄//設(shè)置該行每一列的值dr_Stu["stuNo"]="1001";dr_Stu["stuName"]="劉備";dr_Stu["stuSex"]="男";dr_Stu["stuAge"]=18;dr_Stu["stuBirth"]="2001-6-12";1.DataSet對(duì)象知識(shí)引入任務(wù)3查詢(xún)、修改學(xué)生信息【例8-6】創(chuàng)建DataSet和DataTable,向DataTable中添加數(shù)據(jù),并檢索顯示DataTable中的數(shù)據(jù),代碼如下://將該行添加到表中dt_Stu.Rows.Add(dr_Stu);//新創(chuàng)建一行記錄dr_Stu=dt_Stu.NewRow();//設(shè)置該行每一列的值dr_Stu["stuNo"]="1002";dr_Stu["stuName"]="張三豐";dr_Stu["stuSex"]="男";dr_Stu["stuAge"]=21;dr_Stu["stuBirth"]="1998-3-21";//將該行添加到表中dt_Stu.Rows.Add(dr_Stu);
//新創(chuàng)建一行記錄dr_Stu=dt_Stu.NewRow();//設(shè)置該行每一列的值dr_Stu["stuNo"]="1003";dr_Stu["stuName"]="小龍女";dr_Stu["stuSex"]="女";dr_Stu["stuAge"]=22;dr_Stu["stuBirth"]="1997-8-8";//將該行添加到表中dt_Stu.Rows.Add(dr_Stu);//給DataGridView添加數(shù)據(jù)源//dgvStuInfo.DataSource=dt_Stu;dgvStuInfo.DataSource=ds_Stu.Tables[0];}1.DataSet對(duì)象知識(shí)引入任務(wù)3查詢(xún)、修改學(xué)生信息【例8-6】運(yùn)行效果如圖:2.DataGridView對(duì)象知識(shí)引入任務(wù)3查詢(xún)、修改學(xué)生信息(1)DataGridView控件概述
在數(shù)據(jù)庫(kù)編程中使用數(shù)據(jù)綁定控件時(shí),DataGridView控件是最通用、功能最強(qiáng)和最靈活的控件。使用DataGridView控件,可以顯示和編輯來(lái)自多種不同類(lèi)型的數(shù)據(jù)源的表格數(shù)據(jù)。DataGridView控件以表的形式顯示數(shù)據(jù),并可根據(jù)需要支持?jǐn)?shù)據(jù)編輯的功能,如添加、修改、刪除、排序、分頁(yè)等。DataGridView控件中的每一列,都與數(shù)據(jù)源的一個(gè)字段綁定。字段屬性名稱(chēng)顯示為列標(biāo)題,數(shù)據(jù)值在相應(yīng)的列下面顯示為文本。2.DataGridView對(duì)象知識(shí)引入任務(wù)3查詢(xún)、修改學(xué)生信息(2)數(shù)據(jù)源(DataSource)DataGridView顯示數(shù)據(jù)的方式非常靈活。該控件的DataSource屬性可以設(shè)置下列任何一個(gè)數(shù)據(jù)源。數(shù)組DataTable和DataSetDataViewManagerDataView集合類(lèi)對(duì)象派生或?qū)崿F(xiàn)IList或IlistSource接口的組件3.DataAdapter對(duì)象知識(shí)引入任務(wù)3查詢(xún)、修改學(xué)生信息DataSet對(duì)象表示數(shù)據(jù)源中數(shù)據(jù)的本地副本,它是MicrosoftNETFramework的一個(gè)主要?jiǎng)?chuàng)新。DataSet對(duì)象本身可用來(lái)引用數(shù)據(jù)源,然而為了擔(dān)當(dāng)真正的數(shù)據(jù)管理工具,DataSet必須能夠與數(shù)據(jù)源交互。為了實(shí)現(xiàn)該功能,.NET提供了DataAdapter類(lèi)。
每個(gè)DataAdapter都在DataSet中的單個(gè)DataTable對(duì)象和SQL語(yǔ)句或存儲(chǔ)過(guò)程所產(chǎn)生的單個(gè)結(jié)果集之間交換數(shù)據(jù)??梢允褂肈ataAdpater在DataSet和數(shù)據(jù)源之間交換數(shù)據(jù)。一個(gè)常見(jiàn)例子是應(yīng)用程序?qū)?shù)據(jù)從數(shù)據(jù)庫(kù)讀到DataSet中,然后將DateSet中的更改寫(xiě)回到數(shù)據(jù)庫(kù)中。然而,DataAdapter可以從任何數(shù)據(jù)源中檢索和更新數(shù)據(jù)(不僅僅是數(shù)據(jù)庫(kù)),例如從MicrosoftBizTalk服務(wù)器應(yīng)用程序?qū)?shù)據(jù)讀取到DataSet??梢允褂脭?shù)據(jù)適配器來(lái)填充DataSet,并將數(shù)據(jù)的更改傳送回?cái)?shù)據(jù)源?!纠?-7】使用DataAdapter類(lèi)將從SQLServer數(shù)據(jù)庫(kù)中檢索到的記錄填充到數(shù)據(jù)集中,并檢索顯示DataSet中的數(shù)據(jù),代碼如下:知識(shí)引入任務(wù)3查詢(xún)、修改學(xué)生信息
privatevoidFrmSQL_Load(objectsender,EventArgse){//數(shù)據(jù)庫(kù)連接字符串stringstrConn="server=.;uid=sa;pwd=123456ab78;database=db_shopcar";//連接數(shù)據(jù)庫(kù)sqlConn=newSqlConnection(strConn);//查詢(xún)語(yǔ)句//stringstrSql="select*fromgoodsinfo";stringstrSql="selectidas商品號(hào),goods_nameas商品名稱(chēng),goods_priceas價(jià)格,goods_addras商品產(chǎn)地,goods_storenumas商品數(shù)量,goods_typeas商品類(lèi)型fromgoodsInfo";//數(shù)據(jù)適配器,從數(shù)據(jù)庫(kù)中取出數(shù)據(jù)填充到DataSet數(shù)據(jù)集中。sqlAda=newSqlDataAdapter(strSql,sqlConn);//創(chuàng)建數(shù)據(jù)集DataSetds_Stu=newDataSet();//填充數(shù)據(jù)集//查詢(xún)數(shù)據(jù)庫(kù)內(nèi)容,將結(jié)果送入sqlAda中sqlAda.Fill(ds_Stu,"info");//參數(shù)2:給查詢(xún)得到有表取個(gè)名稱(chēng)(方便以后取數(shù)據(jù)用)dgvStu.DataSource=ds_Stu.Tables[0];}【例8-7】使用DataAdapter類(lèi)將從SQLServer數(shù)據(jù)庫(kù)中檢索到的記錄填充到數(shù)據(jù)集中,并檢索顯示DataSet中的數(shù)據(jù),運(yùn)行效果如圖:知識(shí)引入任務(wù)3查詢(xún)、修改學(xué)生信息1.設(shè)計(jì)學(xué)生信息管理系統(tǒng)主界面窗體(FrmMain.cs),效果如圖8-1所示,單擊主菜單程序代碼如下:任務(wù)實(shí)現(xiàn)任務(wù)3查詢(xún)、修改學(xué)生信息(1)單擊主界面添加學(xué)生信息主菜單響應(yīng)事件代碼如下:privatevoid添加學(xué)生信息ToolStripMenuItem_Click(objectsender,EventArgse){AddStudInfoastu=newAddStudInfo();astu.MdiParent=this;astu.Show();}(2)單擊主界面刪除學(xué)生信息主菜單響應(yīng)事件代碼如下:privatevoid刪除學(xué)生信息ToolStripMenuItem_Click(objectsender,EventArgse){DelStuInfodsi=newDelStuInfo();dsi.MdiParent=this;dsi.Show();}1.設(shè)計(jì)學(xué)生信息管理系統(tǒng)主界面窗體(FrmMain.cs),效果如圖8-1所示,單擊主菜單程序代碼如下:任務(wù)實(shí)現(xiàn)任務(wù)3查詢(xún)、修改學(xué)生信息(3)單擊主界面查看學(xué)生信息主菜單響應(yīng)事件代碼如下:privatevoid查看學(xué)生信息ToolStripMenuItem_Click(objectsender,EventArgse){QueryStudInfoqsi=newQueryStudInfo();qsi.MdiParent=this;qsi.Show();}(4)單擊主界面修改學(xué)生信息主菜單響應(yīng)事件代碼如下:privatevoid修改學(xué)生信息ToolStripMenuItem_Click(objectsender,EventArgse){EdiitStudInfoesi=newEdiitStudInfo();esi.MdiParent=this;esi.Show();}(5)單擊主界面退出主菜單響應(yīng)事件代碼如下:privatevoid退出ToolStripMenuItem_Click(objectsender,EventArgse){Application.Exit();}2.設(shè)計(jì)查詢(xún)學(xué)生信息窗體(QueryStudInf.cs),效果如圖8-7所示,窗體后臺(tái)程序代碼如下:任務(wù)實(shí)現(xiàn)任務(wù)3查詢(xún)、修改學(xué)生信息publicvoidShowStuInfo(){//數(shù)據(jù)庫(kù)連接字符串stringstrConn="server=.;uid=sa;pwd=123456ab78;database=studentDB";//連接數(shù)據(jù)庫(kù)SqlConnectionsqlConn=newSqlConnection(strConn);//寫(xiě)SQL語(yǔ)句stringstrSql="select*fromstudent";SqlDataAdaptersda=newSqlDataAdapter(strSql,strConn);DataSetdsStu=newDataSet();sda.Fill(dsStu);dgvStuInfo.DataSource=dsStu.Tables[0];}3.設(shè)計(jì)修改學(xué)生信息窗體(EditStudInfo.cs),效果如圖8-8所示,窗體后臺(tái)程序代碼如下:任務(wù)實(shí)現(xiàn)任務(wù)3查詢(xún)、修改學(xué)生信息publicpartialclassEdiitStudInfo:Form{SqlConnectionsqlConn;SqlDataAdaptersda;DataSetdsStu;publicEdiitStudInfo(){InitializeComponent();}//窗體加載privatevoidEdiitStudInfo_Load(objectsender,EventArgse){//窗體一加載在窗體下方顯示所有學(xué)生信息ShowStuInfo();
}//查詢(xún)顯示所有學(xué)生信息publicvoidShowStuInfo(){//數(shù)據(jù)庫(kù)連接字符串stringstrConn="server=.;uid=sa;pwd=123456ab78;database=studentDB";//連接數(shù)據(jù)庫(kù)sqlConn=newSqlConnection(strConn);//寫(xiě)SQL語(yǔ)句stringstrSql="select*fromstudent";sda=newSqlDataAdapter(strSql,strConn);dsStu=newDataSet();sda.Fill(dsStu);dgvStuInfo.DataSource=dsStu.Tables[0];}3.設(shè)計(jì)修改學(xué)生信息窗體(EditStudInfo.cs),效果如圖8-8所示,窗體后臺(tái)程序代碼如下:任務(wù)實(shí)現(xiàn)任務(wù)3查詢(xún)、修改學(xué)生信息//將表格中選擇中行的數(shù)據(jù)顯示在上方文本框中privatevoiddgvStuInfo_CellClick(objectsender,DataGridViewCellEventArgse){//得到選擇的行的索引introwIndex=e.RowIndex;//取出數(shù)據(jù)并顯示到界面上//dtpStudyDate.Value=(DateTime)dgvStuInfo.Rows[rowIndex].Cells["colStudyDate"].Value;txtStuId.Text=dgvStuInfo.Rows[rowIndex].Cells["colStuID"].V
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- DIY家居保養(yǎng)延長(zhǎng)家具使用壽命的技巧
- 創(chuàng)新教育與培訓(xùn)新趨勢(shì)下的設(shè)備需求
- 創(chuàng)新教育與團(tuán)隊(duì)協(xié)作能力的培養(yǎng)
- 2024員工個(gè)人入股合作協(xié)議范本:股權(quán)激勵(lì)制度3篇
- 農(nóng)業(yè)機(jī)械的動(dòng)力系統(tǒng)設(shè)計(jì)進(jìn)展
- 醫(yī)療健康領(lǐng)域的創(chuàng)新科技與專(zhuān)利布局
- 2025中國(guó)郵政集團(tuán)公司三明市分公司招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)電信湖北天門(mén)分公司招聘8人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)煤炭地質(zhì)總局應(yīng)屆高校畢業(yè)生招聘653人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)建筑股份限公司崗位招聘30人(信息中心)高頻重點(diǎn)提升(共500題)附帶答案詳解
- 金屬齒形墊片安全操作規(guī)定
- 涂料安全生產(chǎn)操作規(guī)程
- 新設(shè)備、工裝、量具和試驗(yàn)設(shè)備清單
- 區(qū)塊鏈技術(shù)與應(yīng)用學(xué)習(xí)通課后章節(jié)答案期末考試題庫(kù)2023年
- 2023學(xué)年度廣東省廣州市天河區(qū)九年級(jí)(上)期末化學(xué)試卷(附詳解)
- 小學(xué)年級(jí)綜合實(shí)踐活動(dòng)少代會(huì)
- 拍賣(mài)行業(yè)務(wù)管理制度拍賣(mài)行管理制度
- 超星爾雅學(xué)習(xí)通《當(dāng)代大學(xué)生國(guó)家安全教育》章節(jié)測(cè)試答案
- GB/T 23794-2023企業(yè)信用評(píng)價(jià)指標(biāo)
- 第7章 TBM設(shè)備介紹及維修保養(yǎng)匯總
- 第六章 證券法
評(píng)論
0/150
提交評(píng)論