1、c数据集C#数据集应用大全2012-03-14 16:59631人阅读评论(0)收藏举报花了几天时间终于把C#数据集的一些基本应用都整理完了,做为C数据库应用开发人员来说的话,这应该是必备知识了,一、数据集基本应用1.表格新增记录方式一:利用BindingSource的AddNew /新增记录,推荐使用,光标位置处于当前新增记录,且正处理编辑状态 DataRow thisRow = (DataRowView)usersBindingSource.AddNew().Row; thisRowOID = 5; thisRowCNAME = 新增用户; thisRowsex = m;方式二:利用Dat
2、aTable的NewRow /新增记录(不建议使用,因为这种方式Rows.Add时并不处于编辑状态时会受约束影响,且新增时光标不会自动移动该条记录) DataRow thisRow = userDataSet.TablesUsers.NewRow(); thisRowOID = 5; thisRowCNAME = 新增用户; thisRowsex = m; userDataSet.TablesUsers.Rows.Add(thisRow);2.表格删除记录方式一:利用BindingSource的RemoveCurrent if (usersBindingSource.Current != nu
3、ll) /删除当前记录,推荐使用 usersBindingSource.RemoveCurrent();方式二:利用DataRowCollection的Remove /删除当前记录,不推荐使用,这种方式不会记录到RowState中,保存时不会更新 DataRow thisRow = getCurrentDataRow(usersBindingSource); if (thisRow != null) userDataSet.TablesUsers.Rows.Remove(thisRow);方式三:利用DataRow的Delete /删除当前记录,不推荐使用,BindingSource可以更简洁
4、 DataRow thisRow = getCurrentDataRow(usersBindingSource); if (thisRow != null) thisRow.Delete();3.表格修改记录方式一:利用DataRowObject列名直接修改 DataRow thisRow = getCurrentDataRow(usersBindingSource); if (thisRow != null) thisRow.BeginEdit(); thisRowCNAME = 修改的名称; thisRow.EndEdit(); 4.表格查找和筛选记录方式一:利用DataRowCollec
5、tion.find查找 DataColumn keys = new DataColumn1; keys0 = userDataSet.TablesUsers.ColumnsOID; userDataSet.TablesUsers.PrimaryKey = keys; DataRow findRow = userDataSet.TablesUsers.Rows.Find(1); if (findRow = null) MessageBox.Show(没有找到); else MessageBox.Show(成功找到,CNAME = + findRowCNAME); 方式二:利用BindingSou
6、rce.find查找 int i = usersBindingSource.Find(OID, 1); if (i = 0) MessageBox.Show(成功找到,CNAME = +userDataSet.Tablesusers.RowsiCNAME);方式三:利用DataTable.Select获得DataRow数组 DataRow AryDr = userDataSet.Tablesusers.Select(OID 1); for (int i = 0; i 1;7数据集清空方式一:利用DataTable.Clear(),注意这种不会保留删除状态,保存时不会真正删除userDataSe
7、t.Tablesusers.Clear();方式二:利用DataTable.Rows.Clear删除,注意这种不会保留删除状态,保存时不会真正删除userDataSet.Tablesusers.Rows.Clear();方式三:利用BindingSource.RemoveCurrent循环删除全部记录,这种就会保留删除状态。 while (usersBindingSource.Current != null) usersBindingSource.RemoveCurrent();8数据集数据和结构的复制方式一:整个数据集的复制DataSet copyDS = userDataSet.Copy(
8、);方式二:只复制单个表 DataSet copyDS = new DataSet(); copyDS.Tables.Add(userDataSet.Tablesusers.Copy();方式三:只复制数据集的结构 copyDS = userDataSet.Clone(); MessageBox.Show(copyDS.Tablesusers.Rows.Count.ToString();9获取脏数据方式一:整个数据集的脏数据copyDS = userDataSet.GetChanges();方式二:获取单个表的脏数据DataTable dt = userDataSet.Tablesusers.
9、GetChanges();10数据集的数据合并方式一:整个数据集的DataSet.Merge合并 ds.Merge(userDataSet);方式二:单个表的DataTable.Merge合并ds.Merge(userDataSet.Tablesusers);11数据集的数据回滚方式一:数据集的数据回滚userDataSet.RejectChanges();方式二:数据表的数据回滚userDataSet.Tablesusers.RejectChanges();方式三:数据行的数据回滚 DataRow dr = getCurrentDataRow(usersBindingSource); if
10、(dr != null) dr.RejectChanges();12数据集从数据库取数方式一:利用SqlDataAdapter.Fill来填充数据表this.usersTableAdapter.Fill(this.userDataSet.Users);13数据集更新到数据库方式一:利用SqlDataAdapter.Update来更新到数据库 this.Validate(); this.usersBindingSource.EndEdit(); if (this.userDataSet.HasChanges() this.usersTableAdapter.Update(this.userDat
11、aSet.Users); MessageBox.Show(保存成功!); 14 判断数据集变更方式一:利用DataSet.HasChanges()15获取数据集表列集合方式一:利用DataTable.Columns DataColumnCollection dcc = userDataSet.Tablesusers.Columns; for (int i = 0; i dcc.Count; i+) DataColumn dc = dcci; MessageBox.Show(dc.ColumnName); 16获取属于该表的行的集合方式一:利用DataTable.Rows DataRowColl
12、ection drc = userDataSet.Tablesusers.Rows; for (int i = 0; i drc.Count; i+) DataRow dr = drci; MessageBox.Show(string)drCNAME); 17获取或设置存储在指定列中的数据方式一:利用DataRowObject列名来访问或设置。 DataRow dr = getCurrentDataRow(usersBindingSource); MessageBox.Show(string)drCNAME);18获取记录行的状态。方式一:利用DataRow.RowState获取 DataRo
13、w dr = getCurrentDataRow(usersBindingSource); switch (dr.RowState) case DataRowState.Added: MessageBox.Show(新增的记录); break; case DataRowState.Deleted: MessageBox.Show(删除的记录); break; case DataRowState.Detached: MessageBox.Show(不属于任何DataRowCollection的状态); break; case DataRowState.Modified: MessageBox.S
14、how(修改的记录); break; case DataRowState.Unchanged: MessageBox.Show(未变化的记录); break; default: break; ;19对记录行开始编辑操作、取消对该行的当前编辑、终止发生在该行的编辑方式一:利用DataRow的BeginEdit、CancelEdit、EndEdit DataRow dr = getCurrentDataRow(usersBindingSource); dr.BeginEdit(); drCNAME = yy; if (string)drCNAME,DataRowVersion.Original).
15、Equals(YY) dr.CancelEdit(); else dr.EndEdit();20获取或设置列中是否允许空值方式一:利用DataColumn的AllowDBNull,注意这样可以允许空字符串userDataSet.Tablesusers.Columnstel.AllowDBNull = false;21指示列自动递增方式一:利用DataColumn的AutoIncrement指示 DataColumn column = new DataColumn(); column.DataType = System.Type.GetType(System.Int32); column.Aut
16、oIncrement = true; column.AutoIncrementSeed = 1000; column.AutoIncrementStep = 10; / Add the column to a new DataTable. DataTable table = new DataTable(table); table.Columns.Add(column); DataRow dr = table.NewRow(); MessageBox.Show(Convert.ToString(int)dr0); DataRow dr1 = table.NewRow(); MessageBox.
17、Show(Convert.ToString(int)dr10);22获取列名方式一:利用DataColumn.ColumnNameMessageBox.Show(userDataSet.Tablesusers.Columns0.ColumnName);23在创建新行时获取或设置列的默认值方式一:利用DataColumn.DefaultValueuserDataSet.Tablesusers.ColumnsCNAME.DefaultValue = yy;24获取设置列的只读方式一:DataColumn.Readonly userDataSet.Tablesusers.Columnstel.Rea
18、dOnly = true; /这一句会出错,程序写入都不允许userDataSet.Tablesusers.Rows0tel = 111;25获取数据集中的数据类型方式一:利用DataColumn.DataType DataColumnCollection dcc = userDataSet.Tablesusers.Columns; for (int i = 0; i dcc.Count; i+) DataColumn dc = dcci; MessageBox.Show(dc.DataType.ToString(); 26计算列表达式的设置方式一:利用DataColumn.Expressio
19、nuserDataSet.Tablesusers.ColumnstotalMoney.Expression = OID * 100 ;27指示列的每一行中的值是否必须是唯一方式一:利用DataColumn.UniqueuserDataSet.Tablesusers.Columnstel.Unique = true;28获取包含在 DataSet 中的表的集合方式一:利用DataSet的Tables DataTableCollection AryTable = userDataSet.Tables; MessageBox.Show(AryTable0.TableName + + AryTable
20、1.TableName);29获取 DataSet 所包含的数据的自定义视图方式一: 利用DataSet的DefaultViewManager方式二:利用DataTable的DefaultView30表格记录新增、删除、修改的控制方式一:利用BindingSource的AllowEdit、AllowNew、AllowRemoveusersBindingSource.AllowNew = false;31.获取表格的记录数方式一:利用BindingSource.CountMessageBox.Show(usersBindingSource.Count.ToString();方式二:利用DataT
21、able.Rows.Count32.获取表格的当前行方式一:利用bindingSource.Current public static DataRow getCurrentDataRow(BindingSource bindSource) if (!typeof(DataRowView).IsInstanceOfType(bindSource.Current) return null; DataRowView drv = (DataRowView)bindSource.Current; if (drv = null) return null; else return drv.Row; 33.获
22、取表格当前项的索引方式一:利用BindingSource.PositionMessageBox.Show(usersBindingSource.Position.ToString();二、数据集其它应用1其它1.1指示DataTable中的字符串比较是否区分大小写方式一:指示DataSet的CaseSensitive userDataSet.CaseSensitive = true; DataRow AryDR = userDataSet.Tablesusers.Select(CNAME = yy);方式二:指示DataTable的CaseSensitive userDataSet.Tablesusers.CaseSensitive = true; DataRow AryDR = userDataSet.Tablesusers.Select(CNAME = yy);1.2指示在尝试执行任何更新操作时是否遵循约束规则方式一:指示DataSet的EnforceConstraints userDataSet.EnforceConstraints = false;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1