您好,欢迎访问三七文档
C#数据集应用大全2012-03-1416:59631人阅读评论(0)收藏举报花了几天时间终于把C#数据集的一些基本应用都整理完了,做为C#数据库应用开发人员来说的话,这应该是必备知识了,一、数据集基本应用1.表格新增记录方式一:利用BindingSource的AddNew//新增记录,推荐使用,光标位置处于当前新增记录,且正处理编辑状态DataRowthisRow=((DataRowView)usersBindingSource.AddNew()).Row;thisRow[OID]=5;thisRow[CNAME]=新增用户;thisRow[sex]=m;方式二:利用DataTable的NewRow//新增记录(不建议使用,因为这种方式Rows.Add时并不处于编辑状态时会受约束影响,且新增时光标不会自动移动该条记录)DataRowthisRow=userDataSet.Tables[Users].NewRow();thisRow[OID]=5;thisRow[CNAME]=新增用户;thisRow[sex]=m;userDataSet.Tables[Users].Rows.Add(thisRow);2.表格删除记录方式一:利用BindingSource的RemoveCurrentif(usersBindingSource.Current!=null)//删除当前记录,推荐使用usersBindingSource.RemoveCurrent();方式二:利用DataRowCollection的Remove//删除当前记录,不推荐使用,这种方式不会记录到RowState中,保存时不会更新DataRowthisRow=getCurrentDataRow(usersBindingSource);if(thisRow!=null)userDataSet.Tables[Users].Rows.Remove(thisRow);方式三:利用DataRow的Delete//删除当前记录,不推荐使用,BindingSource可以更简洁DataRowthisRow=getCurrentDataRow(usersBindingSource);if(thisRow!=null)thisRow.Delete();3.表格修改记录方式一:利用DataRowObject[列名]直接修改DataRowthisRow=getCurrentDataRow(usersBindingSource);if(thisRow!=null){thisRow.BeginEdit();thisRow[CNAME]=修改的名称;thisRow.EndEdit();}4.表格查找和筛选记录方式一:利用DataRowCollection.find查找DataColumn[]keys=newDataColumn[1];keys[0]=userDataSet.Tables[Users].Columns[OID];userDataSet.Tables[Users].PrimaryKey=keys;DataRowfindRow=userDataSet.Tables[Users].Rows.Find(1);if(findRow==null){MessageBox.Show(没有找到);}else{MessageBox.Show(成功找到,CNAME=+findRow[CNAME]);}方式二:利用BindingSource.find查找inti=usersBindingSource.Find(OID,1);if(i=0)MessageBox.Show(成功找到,CNAME=+userDataSet.Tables[users].Rows[i][CNAME]);方式三:利用DataTable.Select获得DataRow数组DataRow[]AryDr=userDataSet.Tables[users].Select(OID1);for(inti=0;iAryDr.Length;i++){DataRowdr=AryDr[i];MessageBox.Show(Convert.ToString((int)dr[OID]));}5.表格记录的移动方式一:采用BindingSource的方法或position属性实现。//指定定位到哪一行,Position不会随表格列排序而变化,0不一定就是表格的第一行usersBindingSource.Position=0;//移动到上一条,对于表格列排序后,上一条不定是界面显示表格的上一条usersBindingSource.MovePrevious();usersBindingSource.MoveNext();//移动到下一条usersBindingSource.MoveFirst();usersBindingSource.MoveLast();6.表格的过滤方式一:利用BindingSource的Filter来实现usersBindingSource.Filter=OID1;7.数据集清空方式一:利用DataTable.Clear(),注意这种不会保留删除状态,保存时不会真正删除userDataSet.Tables[users].Clear();方式二:利用DataTable.Rows.Clear删除,注意这种不会保留删除状态,保存时不会真正删除userDataSet.Tables[users].Rows.Clear();方式三:利用BindingSource.RemoveCurrent循环删除全部记录,这种就会保留删除状态。while(usersBindingSource.Current!=null)usersBindingSource.RemoveCurrent();8.数据集数据和结构的复制方式一:整个数据集的复制DataSetcopyDS=userDataSet.Copy();方式二:只复制单个表DataSetcopyDS=newDataSet();copyDS.Tables.Add(userDataSet.Tables[users].Copy());方式三:只复制数据集的结构copyDS=userDataSet.Clone();MessageBox.Show(copyDS.Tables[users].Rows.Count.ToString());9.获取脏数据方式一:整个数据集的脏数据copyDS=userDataSet.GetChanges();方式二:获取单个表的脏数据DataTabledt=userDataSet.Tables[users].GetChanges();10.数据集的数据合并方式一:整个数据集的DataSet.Merge合并ds.Merge(userDataSet);方式二:单个表的DataTable.Merge合并ds.Merge(userDataSet.Tables[users]);11.数据集的数据回滚方式一:数据集的数据回滚userDataSet.RejectChanges();方式二:数据表的数据回滚userDataSet.Tables[users].RejectChanges();方式三:数据行的数据回滚DataRowdr=getCurrentDataRow(usersBindingSource);if(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.userDataSet.Users);MessageBox.Show(保存成功!);}14.判断数据集变更方式一:利用DataSet.HasChanges()15获取数据集表列集合方式一:利用DataTable.ColumnsDataColumnCollectiondcc=userDataSet.Tables[users].Columns;for(inti=0;idcc.Count;i++){DataColumndc=dcc[i];MessageBox.Show(dc.ColumnName);}16获取属于该表的行的集合方式一:利用DataTable.RowsDataRowCollectiondrc=userDataSet.Tables[users].Rows;for(inti=0;idrc.Count;i++){DataRowdr=drc[i];MessageBox.Show((string)dr[CNAME]);}17获取或设置存储在指定列中的数据方式一:利用DataRowObject[列名]来访问或设置。DataRowdr=getCurrentDataRow(usersBindingSource);MessageBox.Show((string)dr[CNAME]);18获取记录行的状态。方式一:利用DataRow.RowState获取DataRowdr=getCurrentDataRow(usersBindingSource);switch(dr.RowState){caseDataRowState.Added:MessageBox.Show(新增的记录);break;caseDataRowState.Deleted:MessageBox.Show(删除的记录);break;caseDataRowState.Detached:MessageBox.Show(不属于任何DataRowCollection的状态);break;caseDataRowState.Modified:MessageBox.Show(修改的记录);break;caseDataRowState.Unchanged:MessageBox.Show(未变化的记录);break;default:break;};19对记录行开始编辑操作、取消对该行的当前编辑、终止发生在该行的编辑方式一:利用DataRow的BeginEdit、CancelEdit、EndEditDataRowdr=getCurrentDataRow(usersBindingSource);dr.BeginEdit();dr[CNAME]=yy;if(((string)dr[CNAME,DataRowVersion.Original]).Equals(YY))dr.CancelEdit();elsedr.EndEdit();20获取或设置列中是否允许空值方式一:利用DataColumn的AllowDBNull,注意这样可以允许空字符串userDataSet.Tables[users].Columns[tel].AllowDBNull=false;21指示列自动递增方式一:利用DataColumn的AutoIncrement指示DataColumncolumn=newDataColumn();column.DataType=System.Type.GetType(System.Int32);column.AutoIncrement=true;column.AutoIncrementSeed=1000;column.AutoIncrementStep=10;//AddthecolumntoanewDataTable.DataTabletable=newDataTable(table);table.Columns.Add(column);DataRowdr=table.NewRow();Me
本文标题:c#数据集
链接地址:https://www.777doc.com/doc-7028866 .html