版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)適配器Adapter和數(shù)據(jù)集DataSet2ADO.NET 對象模型對象模型.NET Data ProviderConnectionTransactionCommandParametersDataReaderDataAdapterSelectCommandInsertCommandUpdateCommandDeleteCommandDataSetDataTableCollectionDataTableDataRowCollectionDataColumnCollectionConstraintCollectionDataRelationCollection內(nèi)容內(nèi)容DataSetSqlDat
2、aAdapterSqlCommandBuilderDataGridView總結(jié)總結(jié)DataSet1.DataSet介紹介紹2.DataSet的結(jié)構(gòu)的結(jié)構(gòu)3.DataSet的工作原理的工作原理4.如何創(chuàng)建如何創(chuàng)建DataSet5.如何創(chuàng)建如何創(chuàng)建DataTable5 為什么使用為什么使用 DataSet 對象對象應(yīng)用程序應(yīng)用程序大量的數(shù)據(jù)大量的數(shù)據(jù)來自多個數(shù)據(jù)源來自多個數(shù)據(jù)源v大批量的查詢、修改數(shù)據(jù)怎么辦?v想在斷開數(shù)據(jù)庫連接的情況下操所數(shù)據(jù)怎么辦?使用使用 DataSet 對象對象 數(shù)據(jù)集數(shù)據(jù)集DataSetvDataSet是ADO.NET開發(fā)人員為方便數(shù)據(jù)處理開發(fā)出來的,是數(shù)據(jù)的集合,v是為
3、解決DataReader的缺陷設(shè)計(jì)的vDataReader數(shù)據(jù)處理速度快,但它是只讀的,而且一旦移到下一行,就不能查看上一行的數(shù)據(jù),DataSet則可以自由移動指針。vDataSet的數(shù)據(jù)存放在內(nèi)存,與服務(wù)器數(shù)據(jù)庫斷開的。v數(shù)據(jù)集充當(dāng)包含表、行和列的虛擬數(shù)據(jù)庫7什么是什么是 DataSet 對象對象vDataSet 數(shù)據(jù)集 簡單理解為一個臨時數(shù)據(jù)庫 將數(shù)據(jù)源的數(shù)據(jù)保存在內(nèi)存中 獨(dú)立于任何數(shù)據(jù)庫生產(chǎn)線生產(chǎn)線應(yīng)用程序應(yīng)用程序駐留于內(nèi)存,駐留于內(nèi)存,臨時存儲數(shù)據(jù)臨時存儲數(shù)據(jù)類似的關(guān)系類似的關(guān)系數(shù)據(jù)集的結(jié)構(gòu)數(shù)據(jù)集的結(jié)構(gòu)9DataSet 的結(jié)構(gòu)的結(jié)構(gòu)2-1DataSetDataTableDataColu
4、mnCollectionDataRowCollectionDataColumnDataRowDataTableCollection數(shù)據(jù)集數(shù)據(jù)集數(shù)據(jù)表的集合數(shù)據(jù)表的集合數(shù)據(jù)表數(shù)據(jù)表數(shù)據(jù)列的集合數(shù)據(jù)列的集合數(shù)據(jù)行的集合數(shù)據(jù)行的集合數(shù)據(jù)列數(shù)據(jù)列數(shù)據(jù)行數(shù)據(jù)行DataSet 的結(jié)構(gòu)的結(jié)構(gòu)2-2GradeTableClassTableStudentTableidnameclasssex1小菲5女2小薇3女3小強(qiáng)6男DataTableCollection數(shù)據(jù)表集合數(shù)據(jù)表集合DataTable數(shù)據(jù)表數(shù)據(jù)表DataRowCollection數(shù)據(jù)行集合數(shù)據(jù)行集合DataRow數(shù)據(jù)行數(shù)據(jù)行DataColumnCol
5、lection數(shù)據(jù)列集合數(shù)據(jù)列集合DataColumn數(shù)據(jù)列數(shù)據(jù)列DataSet層次模型層次模型11DataSet是存儲從數(shù)據(jù)庫檢索到的數(shù)據(jù)的對象是零個或多個表對象的集合,這些表對象由數(shù)據(jù)行和列、約束和有關(guān)表中數(shù)據(jù)關(guān)系的信息組成不直接與數(shù)據(jù)庫交互既可容納數(shù)據(jù)庫的數(shù)據(jù),也可以容納非數(shù)據(jù)庫的數(shù)據(jù)源DataSet 類的層次結(jié)構(gòu)DataSetDataTableDataColumnCollectionDataRowCollectionDataColumnDataRowDataTableCollection12數(shù)據(jù)集的工作原理數(shù)據(jù)集的工作原理發(fā)送數(shù)據(jù)發(fā)送數(shù)據(jù)修改數(shù)據(jù)集修改數(shù)據(jù)集傳遞數(shù)據(jù)傳遞數(shù)據(jù)提交修改后的
6、數(shù)據(jù)提交修改后的數(shù)據(jù)請求數(shù)據(jù)請求數(shù)據(jù)客戶端客戶端DataSet層次結(jié)構(gòu)中的類層次結(jié)構(gòu)中的類DataTableCollection 包含特定數(shù)據(jù)集的所有 DataTable 對象DataTable 表示數(shù)據(jù)集中的一個表DataColumnCollection 表示 DataTable 對象的結(jié)構(gòu)DataRowCollection 表示 DataTable 對象中的實(shí)際數(shù)據(jù)行DataColumn 表示 DataTable 對象中列的結(jié)構(gòu)DataRow 表示 DataTable 對象中的一個數(shù)據(jù)行DataSet 層次結(jié)構(gòu)中的類14如何創(chuàng)建如何創(chuàng)建 DataSet 對象對象v創(chuàng)建一個 DataSet
7、可以指定一個數(shù)據(jù)集的名稱 如果不指定名稱,則默認(rèn)被設(shè)為NewDataSetDataSet dataSet = new DataSet();DataSet dataSet = new DataSet(MySchool);DataSet 數(shù)據(jù)集對象數(shù)據(jù)集對象 = new DataSet(數(shù)據(jù)集的名稱字符串?dāng)?shù)據(jù)集的名稱字符串);可選的可選的如何創(chuàng)建如何創(chuàng)建DataTable /創(chuàng)建一個創(chuàng)建一個DataTable的一個實(shí)例。的一個實(shí)例。 DataTable dt = new DataTable(學(xué)生表學(xué)生表); /聲明列對象和行對象。聲明列對象和行對象。 DataColumn column; colu
8、mn = new DataColumn(); /設(shè)置列的數(shù)據(jù)類型設(shè)置列的數(shù)據(jù)類型 column.DataType = System.Type.GetType(System.Int32); column.ColumnName = 學(xué)生編號學(xué)生編號; column.Unique = true; /向向DataTable添加該列添加該列 dt.Columns.Add(column);如何向如何向DataTable里面添加數(shù)據(jù)里面添加數(shù)據(jù)vDataTable 對象還具有允許行在數(shù)據(jù)集中被訪問的 Rows 集合。v下表描述了通過使用 DataRow 對象對行執(zhí)行的各種方法: Add() InsertAt
9、() Find() Select() Remove()如何向如何向DataTable里面添加數(shù)據(jù)里面添加數(shù)據(jù) row = dt.NewRow();/建立一個新行建立一個新行 /為新建立的行添加數(shù)據(jù)為新建立的行添加數(shù)據(jù) row學(xué)生編號學(xué)生編號 = Convert.ToInt32(txtID.Text.ToString(); row學(xué)生姓名學(xué)生姓名 = txtName.Text; /為該表添加指定的行為該表添加指定的行 dt.Rows.Add(row); /綁定數(shù)據(jù)為綁定數(shù)據(jù)為DataGridView dataGridView1.DataSource = dt; dataGridView1.Ref
10、resh();18為什么使用為什么使用 DataAdapterv如何將數(shù)據(jù)庫的數(shù)據(jù)放在 DataSet 中?數(shù)據(jù)庫數(shù)據(jù)庫DataSet數(shù)據(jù)集數(shù)據(jù)集Connection數(shù)據(jù)庫連接數(shù)據(jù)庫連接DataAdapter數(shù)據(jù)適配器數(shù)據(jù)適配器DataAdapter 對象對象v不同命名空間的 DataAdapter 對象命名空間對應(yīng)的 DataAdapter 對象System.Data.SqlClient SqlDataAdapterSystem.Data.OleDbOleDbDataAdapterSystem.Data.Odbc OdbcDataAdapterSystem.Data.OracleClient
11、OracleDataAdapterSqlDataAdapter1.SqlDataAdapter介紹介紹2.在代碼中創(chuàng)建在代碼中創(chuàng)建SqlDataAdapter對象對象3.SqlDataAdapter對象的方法介紹對象的方法介紹4.SqlDataAdapter對象的屬性對象的屬性5.SqlDataAdapter總結(jié)總結(jié)ADO.NET 斷開連接的模型。模型的基本介紹以及講解DataSet導(dǎo)學(xué)1.DataAdapter簡介簡介DataAdapter的基本概念及分類。概念分類ADO.NET 訪問模型訪問模型vADO.NET提供了以下兩種數(shù)據(jù)訪問模型 連接的模型。本模型使用戶能使用數(shù)據(jù)提供程序連接到數(shù)據(jù)
12、庫并對數(shù)據(jù)庫運(yùn)行SQL命令,命令運(yùn)行結(jié)束后將關(guān)閉和數(shù)據(jù)庫之間的連接。 斷開連接的模型。本模型使得可以為來自數(shù)據(jù)源的數(shù)據(jù)創(chuàng)建內(nèi)存中的緩存,然后與數(shù)據(jù)源之間斷開連接。 ADO.NET 斷開連接的模型(圖)斷開連接的模型(圖)在在ADO.NET中,中,DataSet是數(shù)據(jù)在內(nèi)存中的表示形式,是數(shù)據(jù)在內(nèi)存中的表示形式,它提供了獨(dú)立于數(shù)據(jù)源的關(guān)系編程模型。它提供了獨(dú)立于數(shù)據(jù)源的關(guān)系編程模型。數(shù)據(jù)庫與數(shù)據(jù)集數(shù)據(jù)庫與數(shù)據(jù)集之間起橋梁作用之間起橋梁作用DataAdapter的基本概念的基本概念v DataAdapter是和數(shù)據(jù)集(是和數(shù)據(jù)集(DataSet)一起使用的對象,)一起使用的對象,它包括在一個數(shù)據(jù)庫
13、連接后用于填充數(shù)據(jù)集和更新數(shù)據(jù)源它包括在一個數(shù)據(jù)庫連接后用于填充數(shù)據(jù)集和更新數(shù)據(jù)源的一組數(shù)據(jù)命令,在數(shù)據(jù)庫與數(shù)據(jù)集之間起橋梁作用。的一組數(shù)據(jù)命令,在數(shù)據(jù)庫與數(shù)據(jù)集之間起橋梁作用。v DataAdapter的作用相當(dāng)于綁定的的作用相當(dāng)于綁定的DataSet對象和對象和持久的持久的數(shù)據(jù)存儲數(shù)據(jù)存儲(數(shù)據(jù)庫)數(shù)據(jù)庫)之間的通道。之間的通道。v 上面講的數(shù)據(jù)存儲可以是數(shù)據(jù)庫、上面講的數(shù)據(jù)存儲可以是數(shù)據(jù)庫、XML文件、文件、Excel、甚、甚至是純文本。至是純文本。v DataAdapter是專門為處理脫機(jī)數(shù)據(jù)而設(shè)計(jì)的。是專門為處理脫機(jī)數(shù)據(jù)而設(shè)計(jì)的。DataAdapter的分類的分類v根據(jù)數(shù)據(jù)庫的不同,
14、將DataAdapter分類。 SqlDataAdapter:不經(jīng)過OLEDB層直接與SQLServer交互,速度較OleDbDataAdapter快。 OleDbDataAdapter:適用于任何可以用OLEDB數(shù)據(jù)提供者訪問的數(shù)據(jù)源。 OdbcDataAdapter:訪問來自 ODBC數(shù)據(jù)提供器支持的數(shù)據(jù)庫的數(shù)據(jù) OracleDataAdapter:訪問來自 Oracle 數(shù)據(jù)提供器支持的數(shù)據(jù)庫的數(shù)據(jù)SqlDataAdapter是 DataSet和 SQL Server之間的橋接器,用于檢索和保存數(shù)據(jù)。SqlDataAdapter通過對數(shù)據(jù)源使用適當(dāng)?shù)腡ransact-SQL語句映射 Fi
15、ll和 Update來提供這一橋接。XxxDataAdapter對象模型對象模型四種數(shù)據(jù)命令對四種數(shù)據(jù)命令對數(shù)據(jù)庫進(jìn)行讀寫。數(shù)據(jù)庫進(jìn)行讀寫。DataAdapter構(gòu)造函數(shù)構(gòu)造函數(shù)用用DataAdapter填充結(jié)果集填充結(jié)果集打開和關(guān)閉連接打開和關(guān)閉連接讀取多個表讀取多個表串講數(shù)據(jù)綁定串講數(shù)據(jù)綁定2. 在代碼中創(chuàng)建在代碼中創(chuàng)建DataAdapter對象對象在代碼中創(chuàng)建在代碼中創(chuàng)建DataAdapter對象對象v了解DataAdapter的幾種構(gòu)造函數(shù),可以簡化創(chuàng)建DataAdapter對象的過程。v string strConn=Data Source=LENOVO-PC;Initial Cat
16、alog=Student;Integrated Security=Truev string strSQL=“select * from sc; 用查詢串和連接字符串用查詢串和連接字符串SqlDataAdapter da=new SqlDataAdapter (strSQL,strConn);該方式會為每個SqlDataAdapter 創(chuàng)建一個新的SQLconnection對象,應(yīng)適當(dāng)選擇。 用查詢串和連接對象用查詢串和連接對象SQLconnection cn=new sqlConnection(strConn);SqlDataAdapter da=new SqlDataAdapter (str
17、SQL,cn);比較常用的方式 使用使用sqlcommand對象對象SQLCOMMAND cmd=new sqlcommand(strSQL,CN);SqlDataAdapter da=new SqlDataAdapter (cmd);已存在一個sqlcommand對象時使用在這一部分我們重點(diǎn)學(xué)習(xí)一下Fill和Update方法。DataAdapter有兩個重要的方法:Fill()和Update() 。前者從數(shù)據(jù)源把數(shù)據(jù)加載至DataSet,后者把數(shù)據(jù)從DataSet傳回?cái)?shù)據(jù)源。3.DataAdapter的方法的方法DataAdapterFill方法方法v Fill方法一共有4種常用的重構(gòu)方法。
18、 Fill(DataSet) DataSet結(jié)果集 Fill(DataTable) DataTable對象 Fill(Int32,Int32,params DataTable) 開始記錄索引 要填充的數(shù)據(jù)表的行數(shù) DataTable對象 Fill(DataSet, Int32,Int32,String) DataSet結(jié)果集對象 開始記錄的索引 要填充的數(shù)據(jù)集的行數(shù) 表名DataAdapterUpdate方法方法v 重點(diǎn)代碼演示:填充填充DataSet時的代碼:時的代碼: adapter.SelectCommand = new SqlCommand(SELECT * FROM”+” STUDE
19、NT, conn); adapter.Fill(ds); dataGridView1.DataSource = ds.Tables0; dataGridView1.Refresh();更新時的代碼:更新時的代碼: adapter.Update(ds); MessageBox.Show(更新成功);Dataset 與與datagridUpdateFill數(shù)據(jù)綁定數(shù)據(jù)庫DataSet對象Datagrid對象數(shù)據(jù)顯示層ADO應(yīng)用層后臺數(shù)據(jù)庫服務(wù)層層應(yīng)用程序DataAdapter對象Connection對象Command對象DataAdapter利用利用Fill方法進(jìn)行分頁方法進(jìn)行分頁v見課堂代碼示例
20、(Fill方法進(jìn)行分頁)代碼提示:代碼提示: 利用Fill的第四個構(gòu)造函數(shù) Fill(DataSet, StartPageIndex, PageSize, String) ds = new DataSet(); sda.Fill(ds, 0, 5, sc); dataGridView1.DataSource = ds.Tables0;課堂示例課堂示例v利用構(gòu)造函數(shù)為SQL與stringConnection實(shí)現(xiàn)課堂演示例子的相同功能。v演示數(shù)據(jù)綁定功能,根據(jù)班級查詢學(xué)生信息,班級信息用comboBox控件綁定顯示,查詢結(jié)果用DataGridView控件顯示窗體級變量窗體級變量v由于要翻頁,在bt
21、nShow, btnPreviousPage 和btnNextPage按鈕的Click()事件中都要用。故定義窗體級變量。 private int recRows, startNum=0; private string connStr, sqlStr; private SqlDataAdapter sda; private DataSet ds;btnNextPage_Clickv connStr = Data Source=LENOVO-PC;Initial Catalog=Student;Integrated Security=True;vsqlStr = select * from sc
22、;v SqlConnection conn = new SqlConnection(connStr);vsda = new SqlDataAdapter(sqlStr, conn);vDataSet ds1 = new DataSet();vsda.Fill(ds1);vrecRows = ds1.Tables0.Rows.Count;btnNextPage_Clickv btnPreviousPage.Enabled = false;vds = new DataSet();vsda.Fill(ds, 0, 5, sc);vdataGridView1.DataSource = ds.Table
23、s0;vdataGridView1.Refresh();btnNextPage_Clickvds = new DataSet();vbtnPreviousPage.Enabled = true;vstartNum = startNum + 5;vsda.Fill(ds, startNum, 5, sc);vdataGridView1.DataSource = ds.Tables0;vdataGridView1.Refresh(); vif (startNum +5=recRows)v btnNextPage.Enabled = false; btnPreviousPage_Clickvds =
24、 new DataSet();vbtnNextPage.Enabled = true;vstartNum = startNum - 5;vsda.Fill(ds, startNum, 5, sc);vdataGridView1.DataSource = ds.Tables0;vdataGridView1.Refresh();vif (startNum =0)v btnPreviousPage.Enabled = false;用來控制數(shù)據(jù)閱讀或插入、修改、刪除或更新的屬性。4. DataAdapter的屬性的屬性用來控制與數(shù)據(jù)集之間通信的屬性。DataAdapter的屬性的屬性屬性屬性描述描述S
25、electCommand在數(shù)據(jù)源中檢索數(shù)據(jù)的數(shù)據(jù)命令在數(shù)據(jù)源中檢索數(shù)據(jù)的數(shù)據(jù)命令I(lǐng)nsertCommand在數(shù)據(jù)源中插入數(shù)據(jù)的數(shù)據(jù)命令在數(shù)據(jù)源中插入數(shù)據(jù)的數(shù)據(jù)命令UpdateCommand在數(shù)據(jù)源中更新數(shù)據(jù)的數(shù)據(jù)命令在數(shù)據(jù)源中更新數(shù)據(jù)的數(shù)據(jù)命令DeleteCommand在數(shù)據(jù)源中刪除數(shù)據(jù)的數(shù)據(jù)命令在數(shù)據(jù)源中刪除數(shù)據(jù)的數(shù)據(jù)命令TableMappingsDataTableMapping 對象的集合,決定對象的集合,決定DataSet中的行與數(shù)據(jù)源之間的中的行與數(shù)據(jù)源之間的關(guān)系關(guān)系UpdateBatchSize決定批進(jìn)程支持,指出在批處理中可執(zhí)行的命令的數(shù)量決定批進(jìn)程支持,指出在批處理中可執(zhí)行的命令
26、的數(shù)量DataAdapter4個命令屬性的應(yīng)用個命令屬性的應(yīng)用v InsertCommand屬性的應(yīng)用。v 其他命令屬性的設(shè)置與InsertCommand類似類似,只將對應(yīng)的sql 改為 update、Select、delete即可 string connStr = Data Source=LENOVO-PC;Initial Catalog=Student;Integrated Security=True; SqlConnection conn = new SqlConnection(connStr); string sqlStr1 = insert into sc values(sno,cn
27、o,grade); SqlCommand command = new SqlCommand(sqlStr1, conn); .SqlDataAdapter sda = new SqlDataAdapter(); sda.InsertCommand = command; conn.Open(); sda.InsertCommand.ExecuteNonQuery(); conn.Close();v使用DataAdapter的Fill()方法填充DataSet時,DataSet所使用的默認(rèn)列名與數(shù)據(jù)源隨定義的列名相同。vDataAdapter通過它的TableMappings屬性提供了一個Data
28、TableMappingCollection,包含了DataTableMapping對象的集合。DataAdapterTableMappings屬性屬性的應(yīng)用的應(yīng)用v重點(diǎn)代碼演示:SqlDataAdapter adapter = CreateDataAdapter(conn, age);DataSet ds = new DataSet();/Mappings的用法的用法DataTableMapping mapping = adapter.TableMappings.Add(Table, 學(xué)生表學(xué)生表);mapping.ColumnMappings.Add(SNO, 學(xué)生編號學(xué)生編號);mapp
29、ing.ColumnMappings.Add(SName, 學(xué)生姓名學(xué)生姓名);mapping.ColumnMappings.Add(SDept, 所在院系所在院系);mapping.ColumnMappings.Add(SClass, 所在班級所在班級);mapping.ColumnMappings.Add(SSex, 性別性別);mapping.ColumnMappings.Add(SAge, 年齡年齡);adapter.Fill(ds);dataGridView1.DataSource = ds.Tables學(xué)生表學(xué)生表;/使用設(shè)置好的映射表名字。使用設(shè)置好的映射表名字。dataGrid
30、View1.Refresh();用InsertCommand進(jìn)行數(shù)據(jù)插入時,還是要打開connection。為利用SqlDataAdapter非連接性,可以用DataTable上進(jìn)行操作,再利用SqlDataAdapter的Update()方法來完成將更新的數(shù)據(jù)保存到數(shù)據(jù)庫。關(guān)鍵代碼關(guān)鍵代碼v string sqlStr1 = insert into sc values(sno,cno,grade);v SqlCommand command = new SqlCommand(sqlStr1, conn);v v SqlDataAdapter sda = new SqlDataAdapter()
31、;v v conn.Open();v sda.InsertCommand.ExecuteNonQuery();v conn.Close();數(shù)據(jù)集中哪些數(shù)據(jù)修改了?需要需要SqlCommandBuilder對象來對象來確定確定SqlCommandBuilderv作用 c#中用來批量更新數(shù)據(jù)庫 一般和SqlDataAdapter結(jié)合使用。v為何要它? SqlDataAdapter 不會自動生成實(shí)現(xiàn) DataSet 的更改與關(guān)聯(lián)的 SQL Server 實(shí)例之間的協(xié)調(diào)所需的 Transact-SQL 語句SqlCommandBuilderv原理 SqlCommandBuilder,主要用于自動生成
32、單表命令,用于將對 DataSet 所做的更改與關(guān)聯(lián)的 SQL Server 數(shù)據(jù)庫的更改相協(xié)調(diào)。 設(shè)置了 SqlDataAdapter 的 SelectCommand 屬性,則可以創(chuàng)建一個 SqlCommandBuilder 對象來自動生成用于單表更新的 Transact-SQL 語句。 SqlCommandBuilder 將生成其他任何未設(shè)置的 Transact-SQL 語句。SelectCommandSqlDataAdapterSqlCommandBuilderGetInsertCommand()GetUpdateCommand()GetDeleteCommand()InsertComm
33、andUpdateCommandDeleteCommand圖示SqlCommandBuilder原理SqlCommandBuilderv原理v注意事項(xiàng): SelectCommand 還必須至少返回一個主鍵列或唯一的列。如果什么都沒有返回,就會產(chǎn)生 InvalidOperation 異常,不生成命令。 SqlCommandBuilder 還使用由 SelectCommand 引用的 Connection、CommandTimeout 和 Transaction 屬性。如果修改了這些屬性中的一個或多個,或者替換了 SelectCommand 本身,用戶則應(yīng)調(diào)用 RefreshSchema()。Sq
34、lCommandBuilderv作用v SqlCommandBuilder cmdbuilder = new SqlCommandBuilder(sda);vsda.UpdateCommand = cmdbuilder.GetUpdateCommand();vsda.Update(ds.Tables sc);btnAdd_Click()v string sqlStr = select sno,cno,grade from sc;v SqlDataAdapter sda = new SqlDataAdapter(sqlStr, conn);v DataTable dt = new DataTab
35、le();v sda.Fill(dt);v DataRow dr = dt.Rows.Add();v dr0 = txtSNO.Text;v dr1 = txtCNO.Text;v dr2 = int.Parse (txtGrade.Text);v SqlCommandBuilder scb = new SqlCommandBuilder(sda);v sda.Update(dt.GetChanges); v dt.AcceptChanges();btnUpdate_Click()v string sqlStr = select sno,cno,grade from sc where sno=
36、+txtSNO .Text + and cno=+txtCNO .Text +;v SqlDataAdapter sda = new SqlDataAdapter(sqlStr, conn);v DataTable dt = new DataTable();v sda.Fill(dt);v DataRow dr = dt.Rows0;v dr2 = int.Parse(txtGrade.Text);v SqlCommandBuilder scb = new SqlCommandBuilder(sda);v sda.Update(dt.GetChanges);v dt.AcceptChanges
37、();btnUpdate_Click()v string sqlStr = select sno,cno,grade from sc where sno=+txtSNO .Text + and cno=+txtCNO .Text +;v SqlDataAdapter sda = new SqlDataAdapter(sqlStr, conn);v DataTable dt = new DataTable();v sda.Fill(dt);v /DataRow dr = new DataRow();v dt.Rows0.Delete ();v SqlCommandBuilder scb = ne
38、w SqlCommandBuilder(sda);v sda.Update(dt.GetChanges);v dt.AcceptChanges();DataGridView 控件具有極高的可配置性和可擴(kuò)展性,它提供有大量的屬性、方法和事件,可以用來對該控件的外觀和行為進(jìn)行自定義。當(dāng)需要在 Windows 窗體應(yīng)用程序中顯示表格數(shù)據(jù)時,請首先考慮使用 DataGridView 控件,然后再考慮使用其他控件(例如 DataGrid)。若要以小型網(wǎng)格顯示只讀值,或者若要使用戶能夠編輯具有數(shù)百萬條記錄的表,DataGridView 控件將為您提供可以方便地進(jìn)行編程以及有效地利用內(nèi)存的解決方案。Data
39、GridView DataGridView DataGridViewv常用屬性網(wǎng)格 CurrentRow當(dāng)前行 CurrentColumn當(dāng)前列 CurrentCell當(dāng)前單元格v例如v Console.WriteLine(DataGridView1.CurrentCell.Value)v Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex)v Console.WriteLine(DataGridView1.CurrentCell.RowIndex)v DataGridView1.CurrentCell = DataGridView1
40、(0, 0)v DataGridViewv常用屬性網(wǎng)格顏色設(shè)置 DefaultCellStyle BackColor Font ForeColorv例如dataGridView1.DefaultCellStyle.BackColor = Color.Wheat;dataGridView1.Rows0.DefaultCellStyle.BackColor = Color.Blue;dataGridView1.Columns1.DefaultCellStyle.BackColor = Color.Yellow;v /隔行設(shè)置不同的背景顏色。vdataGridView1.AlternatingRow
41、sDefaultCellStyle.BackColor = Color.GreenYellow;v v DataGridView行列的隱藏和刪除 a)行和列的隱藏 DataGridView1.Columns0.Visible = false; DataGridView1.Rows0.Visible = false b)行頭和列頭的隱藏 dataGridView1.ColumnHeadersVisible = false; dataGridView1.RowHeadersVisible = false; c)行和列的刪除行和列的刪除 DataGridView1.Columns.Remove(Co
42、lumn1); DataGridView1.Columns.RemoveAt(0); DataGridView1.Rows.RemoveAt(0); DataGridViewv常用屬性單元格的編輯屬性 ReadOnly Frozenv例如DataGridView1.ReadOnly = True指定行列單元格編輯屬性DataGridView1.Columns(1).ReadOnly = TrueDataGridView1.Rows(2).ReadOnly = TrueDataGridView1(0, 0).ReadOnly = Truev DataGridViewv常用屬性單元格的編輯屬性v設(shè)置點(diǎn)擊數(shù)據(jù)列標(biāo)括題時對記錄排序 foreach ( DataGridViewColumn c in dataGridView1.Columns)v v c.SortMode = DataGridViewColumnSortMode.Automatic;v 下表顯示從 DataGridViewCell 派生的類:DataGridViewTextBoxCell DataGridViewButtonCell DataGridViewLinkCell DataGridViewCheckBoxCell DataGridViewCo
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全生產(chǎn)技術(shù)服務(wù)合同范本
- 鐵路交通設(shè)施建設(shè)施工合同
- 物業(yè)保潔外包合同
- 2025園林綠化合作合同范本
- 2025年浙科版選修3地理上冊月考試卷
- 聘用合同補(bǔ)充協(xié)議
- 代加工的合同模板范本
- 簡單的鋁材購銷合同范本
- 培訓(xùn)租場地合同協(xié)議書范本
- 產(chǎn)品加工的簡單合同范本
- 大慶市2025屆高三年級第二次教學(xué)質(zhì)量檢測(二模)政治試卷(含答案)
- 企業(yè)員工信息安全意識培訓(xùn)
- 《學(xué)前兒童文學(xué)與繪本閱讀》課程教學(xué)大綱
- 2025屆高考化學(xué) 二輪復(fù)習(xí) 專題五 離子共存(含解析)
- 2024年中國智能電磁爐市場調(diào)查研究報(bào)告
- 湖北十堰燃?xì)馐鹿拾咐治鲑Y料
- 醫(yī)療糾紛處理及防范技巧與案例分析 課件
- 三級綜合醫(yī)院全科醫(yī)療科設(shè)置基本標(biāo)準(zhǔn)
- 《上消化道出血教案》課件
- 部編版五年級語文下冊第四單元課時作業(yè)本有答案
- 出國高中成績證明模板
評論
0/150
提交評論