




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
學生信息管理系統(tǒng)任務1:連接數(shù)據(jù)庫任務2:添加、刪除學生信息任務3:查詢、修改學生信息項目八利用C#和數(shù)據(jù)庫編程,編寫學生信息管理系統(tǒng)。要求用多文檔窗體實現(xiàn)學生信息的增加、按學號刪除學生、修改學生信息和顯示所有學生信息的功能。ADO.NET是.NETFramework用于訪問數(shù)據(jù)庫的一種技術(shù)。Microsoft通過ADO.NET向編程人員提供了功能強大的數(shù)據(jù)訪問能力,既可以直接在編程模式下通過輸入程序代碼設(shè)計數(shù)據(jù)訪問程序,也可以利用系統(tǒng)提供的數(shù)據(jù)訪問向?qū)е苯舆M行可視化程序設(shè)計。通過本項目設(shè)計,主要介紹ADO.NET的概念及其對象等有關(guān)數(shù)據(jù)庫訪問的內(nèi)容。項目引入熟悉ADO.NET概述和功能掌握.NETFramework數(shù)據(jù)提供程序核心對象掌握理解并使用記錄集(DataSet)對象掌握理解并使用DataGridView顯示和操作數(shù)據(jù)庫
學習目標學生信息管理系統(tǒng)要求利用C#和ADO.NET編程,使用多文檔窗體實現(xiàn)學生信息的增加、按學號刪除學生、修改學生信息和顯示所有學生信息的功能,系統(tǒng)主界面效果如圖8-1所示:項目描述單擊主窗體菜單的添加學生信息菜單,彈出添加學生信息窗體,效果如圖8-2所示:此時,用戶輸入要添加的學生信息,單擊“添加”按鈕,彈出”學生信息添加成功!”消息框,單擊“關(guān)閉”按鈕,關(guān)閉本窗體,效果如圖8-3所示:項目描述單擊主窗體菜單的刪除學生信息菜單,彈出刪除學生信息窗體,單擊“關(guān)閉”按鈕,關(guān)閉本窗體。效果如圖8-4所示:如果輸入的學號存在,則刪除該記錄,并給出提示:[刪除成功]。效果如圖8-5所示:項目描述如果輸入的學號不存在,要給出提示:[學號不存在,無法刪除]。效果如圖8-6所示:單擊主窗體菜單的查看學生信息菜單,彈出顯示所有學生信息窗體。窗體中列名必須是中文,該窗體只能顯示,不能進行添加或修改或刪除操作。效果如圖8-7所示:項目描述單擊主窗體菜單的修改學生信息菜單,彈出修改學生信息窗體。窗體加載時,下方的列表顯示所有學生信息,用戶選中某行數(shù)據(jù),將數(shù)據(jù)顯示在上方對應文本框中,供用戶修改
窗體中列名必須是中文。效果如圖8-8所示:用戶在上方文本框中修改完數(shù)據(jù),點擊“修改”按鈕,則修改該記錄,并給出提示:[修改記錄成功!]。點擊“關(guān)閉”按鈕,關(guān)閉本窗體。效果如圖8-9所示:項目描述任務1:連接數(shù)據(jù)庫任務2:添加、刪除學生信息任務3:查詢、修改學生信息工作任務任務描述
要完成學生信息管理系統(tǒng)功能,首先必須要連接后臺數(shù)據(jù)庫,實現(xiàn)對學生信息的增、刪、改、查操作。任務1連接數(shù)據(jù)庫1.
ADO.NET知識引入任務1連接數(shù)據(jù)庫(1)ADO.NET概述ADO.NET是一個以.NET框架為基礎(chǔ)的全新的數(shù)據(jù)操作模型,是專門為.NET平臺上的數(shù)據(jù)訪問而設(shè)計的,更適用于分布式和Internet訪問等大型應用程序的開發(fā),也可使程序設(shè)計人員以更方便、直觀的方式來存取數(shù)據(jù)。ADO.NET由MicrosoftActiveXDataObjects(ADO)改進而來,它提供平臺互用和可收縮的數(shù)據(jù)訪問功能,它是微軟開發(fā)的一個COM組件庫,ADO主要包括Connection、Command、Recordset和Field對象。使用ADO時,要打開數(shù)據(jù)庫的連接,把一些數(shù)據(jù)選出來,放在記錄集中,這些數(shù)據(jù)由字段組成,接著處理這些數(shù)據(jù),并在服務器上進行更新,最后關(guān)閉連接。ADO.NET的作用與ADO相同,提供易于使用的類集,以訪問數(shù)據(jù),ADO.NET的功能得到更新數(shù)據(jù)和增強,可以用于.NET編程環(huán)境。1.
ADO.NET知識引入任務1連接數(shù)據(jù)庫(2)ADO.NET的作用ADO.NET的主要目標是提供對關(guān)系數(shù)據(jù)的簡單訪問功能。顯然,易于使用的類表示關(guān)系數(shù)據(jù)庫中的表、列和行,另外,ADO.NET引入了DataSet類,它代表來自封裝在一個單元中的關(guān)聯(lián)表中的一組數(shù)據(jù),并維持它們之間完整的關(guān)系。最常見的一個模型是三層模型,如下所示。數(shù)據(jù)層:包括數(shù)據(jù)庫和數(shù)據(jù)訪問代碼。業(yè)務層:包含業(yè)務邏輯,定義應用程序的獨特功能,并把該功能與其他層分離開來,這個層有時也稱為中間層顯示層:提供用戶界面,控制應用程序的流程,對用戶輸入進行驗證等等。1.
ADO.NET知識引入任務1連接數(shù)據(jù)庫(3)ADO.NET的結(jié)構(gòu)1.
ADO.NET知識引入任務1連接數(shù)據(jù)庫(4).NETFramework數(shù)據(jù)提供程序的核心對象Connection對象ADOConnection對象用于創(chuàng)建一個到達某個數(shù)據(jù)源的開放連接。通過此連接,您可以對一個數(shù)據(jù)庫進行訪問和操作。Command對象ADOCommand對象用于執(zhí)行面向數(shù)據(jù)庫的一次簡單查詢。此查詢可執(zhí)行諸如創(chuàng)建、添加、取回、刪除或更新記錄等動作。DataReader對象這是一個快速而易用的對象,可以從數(shù)據(jù)源中操作只讀只進的數(shù)據(jù)流。DataAdapter對象DataAdapter提供連接DataSet對象和數(shù)據(jù)源的橋梁。2.ADO.NET訪問數(shù)據(jù)庫知識引入任務1連接數(shù)據(jù)庫(1)連接數(shù)據(jù)庫(Connection)Connection對象用于在應用程序和數(shù)據(jù)庫之間建立連接,每個.NET數(shù)據(jù)提供程序都有其自己的連接類。具體實例化哪個特定的連接類,取決于所使用的.NET數(shù)據(jù)提供程序。數(shù)據(jù)提供程序連接類SQL數(shù)據(jù)提供程序SqlConnectionOLEDB數(shù)據(jù)提供程序OleDbConnectionOracle數(shù)據(jù)提供程序OracleConnectionODBC數(shù)據(jù)提供程序OdbcConnection屬
性說
明ConnectionString指定連接數(shù)據(jù)庫所需的值的字符串格式描述Database與Connection對象連接的數(shù)據(jù)庫方
法說
明Open打開與數(shù)據(jù)庫的連接,以允許對數(shù)據(jù)庫數(shù)據(jù)進行事務處理Close關(guān)閉與數(shù)據(jù)庫的連接。關(guān)閉后,不能對數(shù)據(jù)庫進行事務處理任務1
連接數(shù)據(jù)庫任務實現(xiàn)【例8-1】設(shè)計一個窗體,使用Connection對象連接學生信息管理系統(tǒng)后臺數(shù)據(jù)庫StudentDB,運行效果如圖所示:任務1
連接數(shù)據(jù)庫任務實現(xiàn)【例8-1】privatevoidbutton1_Click(objectsender,EventArgse){//第一步:定義連接字符串stringstrConn="server=.;uid=sa;pwd=123456ab78;database=studentDB";//第二步:創(chuàng)建連接對象SqlConnectionsqlConn=newSqlConnection(strConn);try{//第三步:打開連接對象sqlConn.Open();MessageBox.Show("數(shù)據(jù)庫連接成功!");}catch(Exceptionex){//處理異常MessageBox.Show("異常信息:\n"+ex.Message);}finally{//第四步:關(guān)閉連接對象sqlConn.Close();}}.NETframework中的ADO.NET是一組類,允許應用程序與數(shù)據(jù)庫交互,以便檢索和更新信息。DataSet和.NET數(shù)據(jù)提供程序是ADO.NET的兩個主要組件。每種.NET數(shù)據(jù)提供程序都是由以下四個對象組成:Connection,Command,DataAdapter以及DataReader。Connection對象用于在應用程序和數(shù)據(jù)庫之間建立連接。任務1
連接數(shù)據(jù)庫任務小結(jié)任務描述單擊主窗體菜單的添加、刪除學生信息菜單,分別實現(xiàn)對學生信息的添加和刪除功能,如果添加成功,則彈出“學生信息添加成功!”消息框,單擊該窗體“關(guān)閉”按鈕,關(guān)閉該窗體;刪除學生信息時,如果輸入的學號存在,則刪除該記錄,并彈出“刪除成功!”消息框,如果輸入的學號不存在,則彈出“學號不存在,無法刪除!”消息框,單擊該窗體“關(guān)閉”按鈕,關(guān)閉該窗體。任務2
添加、刪除學生信息1.執(zhí)行SQL語句(Command)我們可以使用Command對象允許向數(shù)據(jù)庫傳遞SQL腳本,以便檢索和操作數(shù)據(jù)庫中的數(shù)據(jù)。任務2添加、刪除學生信息知識引入數(shù)據(jù)提供程序命令類SQL數(shù)據(jù)提供程序SqlCommandOLEDB數(shù)據(jù)提供程序OleDbCommandOracle數(shù)據(jù)提供程序OracleCommandODBC數(shù)據(jù)提供程序OdbcCommand屬
性說
明CommandText表示Command對象將執(zhí)行的SQL語句或存儲過程CommandType表示Command對象的命令類型,包括StoreProcedure、Text和TableDirect。其中:StoreProcedure表示執(zhí)行T-SQL存儲過程,Text表示執(zhí)行T-SQL語句Connection表示Command對象使用的活動連接方
法說
明ExecuteNonQuery用于Command對象執(zhí)行T-SQL的語句,對數(shù)據(jù)庫的單項操作,如UPDATE,INSERT,DELETE。返回影響的行數(shù)ExecuteReader用于Command對象執(zhí)行T-SQL的語句,對數(shù)據(jù)庫的查詢操作,趕回一個DataReader對象。1.設(shè)計添加學生信息窗體(AddStudInfo.cs),效果如圖8-3所示,窗體后臺程序代碼如下:privatevoidbtnAdd_Click(objectsender,EventArgse){//數(shù)據(jù)庫連接字符串stringstrConn="server=.;uid=sa;pwd=123456ab78;database=studentDB";//連接數(shù)據(jù)庫SqlConnectionsqlConn=newSqlConnection(strConn);/**************獲取用戶在界面上輸入的數(shù)據(jù)*************/stringstuId=txtStuId.Text;stringstuName=txtStuName.Text;stringstuBirthday=dtpBirthday.Value.ToString();stringstuSex=cmbSex.Text;stringstuAddress=txtStuAddress.Text;/*****************執(zhí)行SQL語句***************/stringstrsql=string.Format("insertintostudentvalues('{0}','{1}','{2}','{3}','{4}')",stuId,stuName,stuSex,stuBirthday,stuAddress);任務2添加、刪除學生信息任務實現(xiàn)//創(chuàng)建命令對象,執(zhí)行SQL語句SqlCommandcmd=newSqlCommand(strsql,sqlConn);//執(zhí)行SQL語句try{sqlConn.Open();intn=cmd.ExecuteNonQuery();//執(zhí)行SQL語句,得到受影響的行數(shù)if(n>0){MessageBox.Show("學生信息添加成功!");}else{MessageBox.Show("學生信息添加失??!");}}catch(Exceptionex){MessageBox.Show("出現(xiàn)異常,原因:\n"+ex);}finally{sqlConn.Close();}}1.設(shè)計添加學生信息窗體(AddStudInfo.cs),效果如圖8-3所示,窗體后臺程序代碼如下:privatevoidbtnAdd_Click(objectsender,EventArgse){//數(shù)據(jù)庫連接字符串stringstrConn="server=.;uid=sa;pwd=123456ab78;database=studentDB";//連接數(shù)據(jù)庫SqlConnectionsqlConn=newSqlConnection(strConn);/**************獲取用戶在界面上輸入的數(shù)據(jù)*************/stringstuId=txtStuId.Text;stringstuName=txtStuName.Text;stringstuBirthday=dtpBirthday.Value.ToString();stringstuSex=cmbSex.Text;stringstuAddress=txtStuAddress.Text;/*****************執(zhí)行SQL語句***************/stringstrsql=string.Format("insertintostudentvalues('{0}','{1}','{2}','{3}','{4}')",stuId,stuName,stuSex,stuBirthday,stuAddress);任務2添加、刪除學生信息任務實現(xiàn)//創(chuàng)建命令對象,執(zhí)行SQL語句SqlCommandcmd=newSqlCommand(strsql,sqlConn);//執(zhí)行SQL語句try{sqlConn.Open();intn=cmd.ExecuteNonQuery();//執(zhí)行SQL語句,得到受影響的行數(shù)if(n>0){MessageBox.Show("學生信息添加成功!");}else{MessageBox.Show("學生信息添加失?。?);}}catch(Exceptionex){MessageBox.Show("出現(xiàn)異常,原因:\n"+ex);}finally{sqlConn.Close();}}//關(guān)閉按鈕單擊事件代碼如下:privatevoidbtnClose_Click(objectsender,EventArgse){this.Close();}2.設(shè)計刪除學生信息窗體(DelStudInfo.cs),效果如圖8-5所示,窗體后臺程序代碼如下:privatevoidbtnDel_Click(objectsender,EventArgse){//獲取界面要刪除的學號stringstuID=txtStuId.Text;//數(shù)據(jù)庫連接字符串stringstrConn="server=.;uid=sa;pwd=123456ab78;database=studentDB";//連接數(shù)據(jù)庫SqlConnectionsqlConn=newSqlConnection(strConn);//寫SQL語句stringstrSql=string.Format("deletefromstudentwherestuID='{0}'",stuID);//創(chuàng)建命令對象SqlCommandsqlCmd=newSqlCommand(strSql,sqlConn);任務2添加、刪除學生信息任務實現(xiàn)//執(zhí)行SQL語句try{sqlConn.Open();intn=sqlCmd.ExecuteNonQuery();if(n>0){MessageBox.Show("刪除成功!");}else{MessageBox.Show("學號不存在,無法刪除!");}}catch(Exceptionex){MessageBox.Show("出現(xiàn)異常,原因:\n"+ex);}finally{sqlConn.Close();}}2.設(shè)計刪除學生信息窗體(DelStudInfo.cs),效果如圖8-5所示,窗體后臺程序代碼如下:privatevoidbtnDel_Click(objectsender,EventArgse){//獲取界面要刪除的學號stringstuID=txtStuId.Text;//數(shù)據(jù)庫連接字符串stringstrConn="server=.;uid=sa;pwd=123456ab78;database=studentDB";//連接數(shù)據(jù)庫SqlConnectionsqlConn=newSqlConnection(strConn);//寫SQL語句stringstrSql=string.Format("deletefromstudentwherestuID='{0}'",stuID);//創(chuàng)建命令對象SqlCommandsqlCmd=newSqlCommand(strSql,sqlConn);任務2添加、刪除學生信息任務實現(xiàn)//執(zhí)行SQL語句try{sqlConn.Open();intn=sqlCmd.ExecuteNonQuery();if(n>0){MessageBox.Show("刪除成功!");}else{MessageBox.Show("學號不存在,無法刪除!");}}catch(Exceptionex){MessageBox.Show("出現(xiàn)異常,原因:\n"+ex);}finally{sqlConn.Close();}}Command對象允許向數(shù)據(jù)庫傳遞請求、檢索和操縱數(shù)據(jù)庫中的數(shù)據(jù)。用于查詢的Command和用于執(zhí)行非查詢的Command在使用上的異同。任務小結(jié)任務2添加、刪除學生信息單擊主窗體菜單的查看學生信息菜單,彈出顯示所有學生信息窗體。窗體中列名必須是中文,該窗體只能顯示,不能進行添加或修改或刪除操作。單擊主窗體菜單的修改學生信息菜單,彈出修改學生信息窗體。窗體加載時,下方的列表顯示所有學生信息,用戶選中某行數(shù)據(jù),將數(shù)據(jù)顯示在上方對應文本框中,供用戶修改,其中顯示學號文本框中加載的學號是主鍵,不允許修改,窗體中列名必須是中文。任務描述任務3查詢、修改學生信息1.DataSet對象知識引入任務3查詢、修改學生信息DataSet是ADO.NET結(jié)構(gòu)的主要組件,它是從數(shù)據(jù)源中檢索到的數(shù)據(jù)在內(nèi)存中的緩存。DataSet由一組DataTable對象組成,您可使這些對象與DataRelation對象互相關(guān)聯(lián)。1.DataSet對象知識引入任務3查詢、修改學生信息類說
明DataTableCollection包含特定數(shù)據(jù)集的所有DataTable對象DataTable表示數(shù)據(jù)集中的一個表DataColumnCollection表示DataTable對象的結(jié)構(gòu)DataRowCollection表示DataTable對象中的實際數(shù)據(jù)行DataColumn表示DataTable對象中列的結(jié)構(gòu)DataRow表示DataTable對象中的一個數(shù)據(jù)行1.DataSet對象知識引入任務3查詢、修改學生信息創(chuàng)建數(shù)據(jù)集使用DataSet構(gòu)造函數(shù)創(chuàng)建數(shù)據(jù)集實例。數(shù)據(jù)集的名稱是可選的,不需要指定。如果沒有指定名稱,則創(chuàng)建的數(shù)據(jù)集的默認名稱為NewDataSet。例如分別創(chuàng)建名稱為StudentInfo的數(shù)據(jù)集和不指定名稱的數(shù)據(jù)集:DataSetstuDataSet=newDataSet(“StudentInfo”);DataSetstuDataSet=newDataSet();屬
性說
明DataSetName用于獲取或設(shè)置當前數(shù)據(jù)集的名稱Tables用于檢索數(shù)據(jù)集中包含的表集合方
法說
明Clear清除數(shù)據(jù)集中包含的所有表的所有行HasChanges返回一個布爾值,指示數(shù)據(jù)集是否更改1.DataSet對象知識引入任務3查詢、修改學生信息DataSet類的最常用屬性是Tables。Tables屬性值是一個DataTable對象集,也就是DataSet中所有“表”的集合,每個DataTable對象代表從數(shù)據(jù)庫檢索到的一個表。屬
性說
明Columns表示列的集合或DataTable包含的DataColumnConstraints表示特定的DataTable的約束集合DataSet表示DataTable所屬的數(shù)據(jù)集PrimaryKey表示作為DataTable主鍵的字段或DataColumnRows表示行的集合或DataTable包含的DataRowHasChanges返回一個布爾值,指示數(shù)據(jù)表是否更改方
法說
明AcceptChanges提交對該表所做的所有修改NewRow添加新的DataRow事
件說
明ColumnChanged修改該列中的值時激發(fā)該事件RowChanged修改該行中的值時激發(fā)該事件RowDeleted成功刪除行時激發(fā)該事件1.DataSet對象知識引入任務3查詢、修改學生信息【例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(表)對象,并指定其名為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ù)類型dc_Stu.ColumnName="stuNo";//設(shè)置該數(shù)據(jù)列的名稱dt_Stu.Columns.Add(dc_Stu);//將該列添加到數(shù)據(jù)表中*/1.DataSet對象知識引入任務3查詢、修改學生信息【例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)鍵字實例化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對象知識引入任務3查詢、修改學生信息【例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對象知識引入任務3查詢、修改學生信息【例8-6】運行效果如圖:2.DataGridView對象知識引入任務3查詢、修改學生信息(1)DataGridView控件概述
在數(shù)據(jù)庫編程中使用數(shù)據(jù)綁定控件時,DataGridView控件是最通用、功能最強和最靈活的控件。使用DataGridView控件,可以顯示和編輯來自多種不同類型的數(shù)據(jù)源的表格數(shù)據(jù)。DataGridView控件以表的形式顯示數(shù)據(jù),并可根據(jù)需要支持數(shù)據(jù)編輯的功能,如添加、修改、刪除、排序、分頁等。DataGridView控件中的每一列,都與數(shù)據(jù)源的一個字段綁定。字段屬性名稱顯示為列標題,數(shù)據(jù)值在相應的列下面顯示為文本。2.DataGridView對象知識引入任務3查詢、修改學生信息(2)數(shù)據(jù)源(DataSource)DataGridView顯示數(shù)據(jù)的方式非常靈活。該控件的DataSource屬性可以設(shè)置下列任何一個數(shù)據(jù)源。數(shù)組DataTable和DataSetDataViewManagerDataView集合類對象派生或?qū)崿F(xiàn)IList或IlistSource接口的組件3.DataAdapter對象知識引入任務3查詢、修改學生信息DataSet對象表示數(shù)據(jù)源中數(shù)據(jù)的本地副本,它是MicrosoftNETFramework的一個主要創(chuàng)新。DataSet對象本身可用來引用數(shù)據(jù)源,然而為了擔當真正的數(shù)據(jù)管理工具,DataSet必須能夠與數(shù)據(jù)源交互。為了實現(xiàn)該功能,.NET提供了DataAdapter類。
每個DataAdapter都在DataSet中的單個DataTable對象和SQL語句或存儲過程所產(chǎn)生的單個結(jié)果集之間交換數(shù)據(jù)??梢允褂肈ataAdpater在DataSet和數(shù)據(jù)源之間交換數(shù)據(jù)。一個常見例子是應用程序?qū)?shù)據(jù)從數(shù)據(jù)庫讀到DataSet中,然后將DateSet中的更改寫回到數(shù)據(jù)庫中。然而,DataAdapter可以從任何數(shù)據(jù)源中檢索和更新數(shù)據(jù)(不僅僅是數(shù)據(jù)庫),例如從MicrosoftBizTalk服務器應用程序?qū)?shù)據(jù)讀取到DataSet??梢允褂脭?shù)據(jù)適配器來填充DataSet,并將數(shù)據(jù)的更改傳送回數(shù)據(jù)源。【例8-7】使用DataAdapter類將從SQLServer數(shù)據(jù)庫中檢索到的記錄填充到數(shù)據(jù)集中,并檢索顯示DataSet中的數(shù)據(jù),代碼如下:知識引入任務3查詢、修改學生信息
privatevoidFrmSQL_Load(objectsender,EventArgse){//數(shù)據(jù)庫連接字符串stringstrConn="server=.;uid=sa;pwd=123456ab78;database=db_shopcar";//連接數(shù)據(jù)庫sqlConn=newSqlConnection(strConn);//查詢語句//stringstrSql="select*fromgoodsinfo";stringstrSql="selectidas商品號,goods_nameas商品名稱,goods_priceas價格,goods_addras商品產(chǎn)地,goods_storenumas商品數(shù)量,goods_typeas商品類型fromgoodsInfo";//數(shù)據(jù)適配器,從數(shù)據(jù)庫中取出數(shù)據(jù)填充到DataSet數(shù)據(jù)集中。sqlAda=newSqlDataAdapter(strSql,sqlConn);//創(chuàng)建數(shù)據(jù)集DataSetds_Stu=newDataSet();//填充數(shù)據(jù)集//查詢數(shù)據(jù)庫內(nèi)容,將結(jié)果送入sqlAda中sqlAda.Fill(ds_Stu,"info");//參數(shù)2:給查詢得到有表取個名稱(方便以后取數(shù)據(jù)用)dgvStu.DataSource=ds_Stu.Tables[0];}【例8-7】使用DataAdapter類將從SQLServer數(shù)據(jù)庫中檢索到的記錄填充到數(shù)據(jù)集中,并檢索顯示DataSet中的數(shù)據(jù),運行效果如圖:知識引入任務3查詢、修改學生信息1.設(shè)計學生信息管理系統(tǒng)主界面窗體(FrmMain.cs),效果如圖8-1所示,單擊主菜單程序代碼如下:任務實現(xiàn)任務3查詢、修改學生信息(1)單擊主界面添加學生信息主菜單響應事件代碼如下:privatevoid添加學生信息ToolStripMenuItem_Click(objectsender,EventArgse){AddStudInfoastu=newAddStudInfo();astu.MdiParent=this;astu.Show();}(2)單擊主界面刪除學生信息主菜單響應事件代碼如下:privatevoid刪除學生信息ToolStripMenuItem_Click(objectsender,EventArgse){DelStuInfodsi=newDelStuInfo();dsi.MdiParent=this;dsi.Show();}1.設(shè)計學生信息管理系統(tǒng)主界面窗體(FrmMain.cs),效果如圖8-1所示,單擊主菜單程序代碼如下:任務實現(xiàn)任務3查詢、修改學生信息(3)單擊主界面查看學生信息主菜單響應事件代碼如下:privatevoid查看學生信息ToolStripMenuItem_Click(objectsender,EventArgse){QueryStudInfoqsi=newQueryStudInfo();qsi.MdiParent=this;qsi.Show();}(4)單擊主界面修改學生信息主菜單響應事件代碼如下:privatevoid修改學生信息ToolStripMenuItem_Click(objectsender,EventArgse){EdiitStudInfoesi=newEdiitStudInfo();esi.MdiParent=this;esi.Show();}(5)單擊主界面退出主菜單響應事件代碼如下:privatevoid退出ToolStripMenuItem_Click(objectsender,EventArgse){Application.Exit();}2.設(shè)計查詢學生信息窗體(QueryStudInf.cs),效果如圖8-7所示,窗體后臺程序代碼如下:任務實現(xiàn)任務3查詢、修改學生信息publicvoidShowStuInfo(){//數(shù)據(jù)庫連接字符串stringstrConn="server=.;uid=sa;pwd=123456ab78;database=studentDB";//連接數(shù)據(jù)庫SqlConnectionsqlConn=newSqlConnection(strConn);//寫SQL語句stringstrSql="select*fromstudent";SqlDataAdaptersda=newSqlDataAdapter(strSql,strConn);DataSetdsStu=newDataSet();sda.Fill(dsStu);dgvStuInfo.DataSource=dsStu.Tables[0];}3.設(shè)計修改學生信息窗體(EditStudInfo.cs),效果如圖8-8所示,窗體后臺程序代碼如下:任務實現(xiàn)任務3查詢、修改學生信息publicpartialclassEdiitStudInfo:Form{SqlConnectionsqlConn;SqlDataAdaptersda;DataSetdsStu;publicEdiitStudInfo(){InitializeComponent();}//窗體加載privatevoidEdiitStudInfo_Load(objectsender,EventArgse){//窗體一加載在窗體下方顯示所有學生信息ShowStuInfo();
}//查詢顯示所有學生信息publicvoidShowStuInfo(){//數(shù)據(jù)庫連接字符串stringstrConn="server=.;uid=sa;pwd=123456ab78;database=studentDB";//連接數(shù)據(jù)庫sqlConn=newSqlConnection(strConn);//寫SQL語句stringstrSql="select*fromstudent";sda=newSqlDataAdapter(strSql,strConn);dsStu=newDataSet();sda.Fill(dsStu);dgvStuInfo.DataSource=dsStu.Tables[0];}3.設(shè)計修改學生信息窗體(EditStudInfo.cs),效果如圖8-8所示,窗體后臺程序代碼如下:任務實現(xiàn)任務3查詢、修改學生信息//將表格中選擇中行的數(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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年網(wǎng)絡(luò)安全技術(shù)發(fā)展趨勢試題及答案
- 啟發(fā)靈感2025年軟件設(shè)計師考試試題及答案
- 2025年軟考設(shè)計師考試獲勝秘籍及試題及答案
- 商業(yè)模式優(yōu)化計劃
- 2025年軟考設(shè)計師快速提升試題及答案
- 廣西百色市德??h2025年數(shù)學七下期末質(zhì)量檢測試題含解析
- 優(yōu)化市場渠道建設(shè)的工作計劃
- 建立內(nèi)部控制制度保障資金安全計劃
- 生物學科跨學科教案設(shè)計計劃
- 山東省威海市文登區(qū)實驗中學2025屆七下數(shù)學期末質(zhì)量檢測試題含解析
- 鑄造工程師資格考試題及答案
- 2023年廣西三類人員B證繼續(xù)教育網(wǎng)絡(luò)學習試題及答案分DOC
- 人教版七年級上生命的思考珍視生命微課
- 數(shù)學手冊(高清版)
- 《安井食品采購成本管理問題研究【開題報告+文獻綜述+正文】》17000字
- 義務教育語文課程標準(2022)測試題帶答案(20套)
- 招聘與配置課程心得體會5篇
- 東芝電梯緊急救出操作指南
- 保護性約束完整版
- 外貿(mào)發(fā)票 PI 形式發(fā)票模板范例
- 2022年新人教版高中生物選擇性必修三答案與提示
評論
0/150
提交評論