dataset 数据集应用实例(详细)_第1页
dataset 数据集应用实例(详细)_第2页
dataset 数据集应用实例(详细)_第3页
dataset 数据集应用实例(详细)_第4页
dataset 数据集应用实例(详细)_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

dataset数据集应用实例(详细)一、数据集基本应用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!=nuII)〃删除当前记录,推荐使用

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("OID>1");for(inti=0;i<AryDr.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();表格的过滤方式一:利用BindingSource的Filter来实现usersBindingSource.Filter="OID>1";数据集清空方式一:利用DataTable.Clear(),注意这种不会保留删除状态,保存时不会真正删除userDataSet.Tables["users"].CIear();方式二:利用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());获取脏数据方式一:整个数据集的脏数据copyDS=userDataSet.GetChanges();方式二:获取单个表的脏数据DataTabledt=userDataSet.Tables["users"].GetChanges();数据集的数据合并方式一:整个数据集的DataSet.Merge合并ds.Merge(userDataSet);方式二:单个表的DataTable.Merge合并ds.Merge(userDataSet.Tables["users"]);数据集的数据回滚方式一:数据集的数据回滚userDataSet.RejectChanges();方式二:数据表的数据回滚userDataSet.Tables["users"].RejectChanges();方式三:数据行的数据回滚DataRowdr=getCurrentDataRow(usersBindingSource);if(dr!=null)dr.RejectChanges();数据集从数据库取数方式一:利用SqlDataAdapter.Fill来填充数据表this.usersTableAdapter.Fill(this.userDataSet.Users);数据集更新到数据库方式一:利用SqlDataAdapter.Update来更新到数据库this.Validate();this.usersBindingSource.EndEdit();if(this.userDataSet.HasChanges()){this.usersTableAdapter.Update(this.userDataSet.Users);MessageBox.Show('保存成功!");}判断数据集变更方式一:利用DataSet.HasChanges()15获取数据集表列集合方式一:利用DataTable.ColumnsDataColumnCollectiondcc=userDataSet.Tables["users"].Columns;for(inti=0;i<dcc.Count;i++){DataColumndc=dcc[i];MessageBox.Show(dc.ColumnName);}16获取属于该表的行的集合方式一:利用DataTable.RowsDataRowCollectiondrc=userDataSet.Tables["users"].Rows;for(inti=0;i<drc.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.lnt32");column.AutoIncrement=true;column.AutoIncrementSeed=1000;column.AutolncrementStep=10;//AddthecolumntoanewDataTable.DataTabletable=newDataTable("table");table.Columns.Add(column);DataRowdr=table.NewRow();MessageBox.Show(Convert.ToString((int)dr[0]));DataRowdr1=table.NewRow();MessageBox.Show(Convert.ToString((int)d门[0]));22获取列名方式一:利用DataColumn.ColumnName23在创建新行时获取或设置列的默认值方式一:利用DataColumn.DefaultValue24获取设置列的只读方式一:DataColumn.ReadonlyuserDataSet.Tables["users"].Columns["tel"].ReadOnly=true;〃这一句会出错,程序写入都不允许userDataSet.Tables["users"].Rows[O]["tel"]="111";25获取数据集中的数据类型方式一:利用DataColumn.DataTypeDataColumnCollectiondcc=userDataSet.Tables["users"].Columns;for(inti=0;i<dcc.Count;i++){DataColumndc=dcc[i];MessageBox.Show(dc.DataType.ToString());}26计算列表达式的设置方式一:利用DataColumn.ExpressionuserDataSet.Tables["users"].Columns["totalMoney"].Expression="OIDTOO"27指示列的每一行中的值是否必须是唯一方式一:利用DataColumn.Unique28获取包含在DataSet中的表的集合方式一:利用DataSet的TablesDataTableCollectionAryTable=userDataSet.Tables;MessageBox.Show(AryTable[0].TableName+""+AryTable[1].TableName);29获取DataSet所包含的数据的自定义视图方式一:利用DataSet的DefaultViewManager方式二:利用DataTable的DefaultView表格记录新增、删除、修改的控制方式一:利用BindingSource的AllowEdit、AllowNew、AllowRemoveusersBindingSource.AllowNew=false;获取表格的记录数方式一:利用BindingSource.CountMessageBox.Show(usersBindingSource.Count.ToString());方式二:利用DataTable.Rows.Count32.获取表格的当前行方式一:利用bindingSource.CurrentpublicstaticDataRowgetCurrentDataRow(BindingSourcebindSource)if(!typeof(DataRowView).lsInstanceOfType(bindSource.Current))returnnull;DataRowViewdrv=(DataRowView)bindSource.Current;if(drv==null)returnnull;elsereturndrv.Row;}33.获取表格当前项的索引方式一:利用BindingSource.PositionMessageBox.Show(usersBindingSource.Position.ToString());二、数据集其它应用1.其它1.1指示DataTable中的字符串比较是否区分大小写方式一:指示DataSet的CaseSensitiveuserDataSet.CaseSensitive=true;方式二:扌旨示DataTable的CaseSensitiveuserDataSet.Tables["users"].CaseSensitive=true;DataRow[]AryDR=userDataSet.Tables["users"].Select("CNAME='yy'");1.2指示在尝试执行任何更新操作时是否遵循约束规则方式一:指示DataSet的EnforceConstraintsuserDataSet.EnforceConstraints=false;DataRowthisRow=userDataSet.Tables["Users"].NewRow();thisRow[”OID"]=5;thisRow[”sex"]="m";userDataSet.Tables["Users"].Rows.Add(thisRow);〃如果没有置EnforceConstraints,则会添加失败。1.3获取与DataSet相关的自定义用户信息的集合方式一:利用DataSet的ExtendedPropertiesPropertyCollectionproperties=userDataSet.ExtendedProperties;//AddatimestampvaluetothePropertyCollection.if(!properties.ContainsKey("TimeStamp"))properties.Add("TimeStamp",DateTime.Now);PropertyCollectionproperties1=userDataSet.ExtendedProperties;MessageBox.Show(((DateTime)properties1["TimeStamp"]).ToString());方式二:利用DataTable的ExtendedPropertiesPropertyCollectionproperties=userDataSet.Tables["users"].ExtendedProperties;//AddatimestampvaluetothePropertyCollection.if(!properties.ContainsKey("TimeStamp"))properties.Add("TimeStamp",DateTime.Now);PropertyCollectionproperties1=userDataSet.Tables["users"].ExtendedProperties;MessageBox.Show(((DateTime)properties1["TimeStamp"]).ToString());1.4获取用于将表链接起来并允许从父表浏览到子表的关系的集合方式一:利用DataSet的RelationsDataColumn[]aryChildColumn=userDataSet.Relations[O].ChildColumns;DataColumn[]aryParentColumn=userDataSet.Relations[0].ParentColumns;MessageBox.Show(aryChildColumn[0].ColumnName+""+aryParentColumn[0].ColumnName);1.5为每个DataTable返回带有一个结果集的DataTableReader方式一:利用DataSet.CreateDataReader()using(DataTableReaderreader=userDataSet.CreateDataReader()){do{if(!reader.HasRows){Console.WriteLine("EmptyDataTableReader");else{while(reader.Read())//下一个数据行{for(inti=0;i<reader.FieldCount;i++){Console.Write(reader[i]+"");}Console.WriteLine();}}Console.WriteLine("========================");}while(reader.NextResult());〃下一个数据表}方式二:利用DataTable.CreateDataReader()1.6返回存储在DataSet中的数据的XML表示形式方式一:利用DataSet.GetXml();MessageBox.Show(userDataSet.GetXml());1.7获取或设置充当数据表主键的列的数组方式一:设置DataTable.PrimaryKeyDataColumn[]keys=newDataColumn[1];keys[O]=userDataSet.Tables["Users"].Columns["OID"];userDataSet.Tables["Users"].PrimaryKey=keys;1.8在加载数据时关闭通知、索引维护和约束方式一:DataTable.BeginLoadData()和EndLoadData()。1.9将DataRow复制到DataTable中,保留任何属性设置以及初始值和当前值方式一:利用DataTable.ImportRowDataSetcopyDS=newUserDataSet();copyDS.Tables["users"].ImportRow(userDataSet.Tables["users"].Rows[0]);MessageBox.Show(copyDS.Tables["users"].Rows[O]["cname",DataRowVersion.Original]+""+copyDS.Tables["users"].Rows[0]["cname",DataRowVersion.Current]);1.10查找和更新特定行。如果找不到任何匹配行,则使用给定值创建新行方式一:利用DataTable.LoadDataRowDataRownewRow=userDataSet.Tables["users"].NewRow();newRow["OID"]=1;newRow["CNAME"]="renameyy";newRow["SEX"]="f";userDataSet.Tables["users"].BeginLoadData();//LoadDataRow,以主键查找记录,当记录存在时只更新,不存在时新增记录DataRowrow=userDataSet.Tables["user

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论