c#数据集.docx
- 文档编号:1162317
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:17
- 大小:20.64KB
c#数据集.docx
《c#数据集.docx》由会员分享,可在线阅读,更多相关《c#数据集.docx(17页珍藏版)》请在冰点文库上搜索。
c#数据集
C#数据集应用大全
2012-03-1416:
59 631人阅读 评论(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的RemoveCurrent
if(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("OID>1");
for(inti=0;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="OID>1"; 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.Columns DataColumnCollectiondcc=userDataSet.Tables["users"].Columns; for(inti=0;i { DataColumndc=dcc[i]; MessageBox.Show(dc.ColumnName); } 16获取属于该表的行的集合 方式一: 利用DataTable.Rows DataRowCollectiondrc=userDataSet.Tables["users"].Rows; for(inti=0;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、EndEdit DataRowdr=getCurrentDataRow(usersBindingSource); dr.BeginEdit(); dr["CNAME"]="yy"; if(((string)dr["CNAME",DataRowVersion.Original]).Equals("YY")) dr.CancelEdit(); else dr.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(); MessageBox.Show(Convert.ToString((int)dr[0])); DataRowdr1=table.NewRow(); MessageBox.Show(Convert.ToString((int)dr1[0])); 22 获取列名 方式一: 利用DataColumn.ColumnName MessageBox.Show(userDataSet.Tables["users"].Columns[0].ColumnName); 23在创建新行时获取或设置列的默认值 方式一: 利用DataColumn.DefaultValue userDataSet.Tables["users"].Columns["CNAME"].DefaultValue="yy"; 24 获取设置列的只读 方式一: DataColumn.Readonly userDataSet.Tables["users"].Columns["tel"].ReadOnly=true; //这一句会出错,程序写入都不允许 userDataSet.Tables["users"].Rows[0]["tel"]="111"; 25获取数据集中的数据类型 方式一: 利用DataColumn.DataType DataColumnCollectiondcc=userDataSet.Tables["users"].Columns; for(inti=0;i { DataColumndc=dcc[i]; MessageBox.Show(dc.DataType.ToString()); } 26计算列表达式的设置 方式一: 利用DataColumn.Expression userDataSet.Tables["users"].Columns["totalMoney"].Expression="OID*100"; 27指示列的每一行中的值是否必须是唯一 方式一: 利用DataColumn.Unique userDataSet.Tables["users"].Columns["tel"].Unique=true; 28获取包含在DataSet中的表的集合 方式一: 利用DataSet的Tables DataTableCollectionAryTable=userDataSet.Tables; MessageBox.Show(AryTable[0].TableName+""+AryTable[1].TableName); 29 获取DataSet所包含的数据的自定义视图 方式一: 利用DataSet的DefaultViewManager 方式二: 利用DataTable的DefaultView 30.表格记录新增、删除、修改的控制 方式一: 利用BindingSource的AllowEdit、AllowNew、AllowRemove usersBindingSource.AllowNew=false; 31. 获取表格的记录数 方式一: 利用BindingSource.Count MessageBox.Show(usersBindingSource.Count.ToString()); 方式二: 利用DataTable.Rows.Count 32.获取表格的当前行 方式一: 利用bindingSource.Current publicstaticDataRowgetCurrentDataRow(BindingSourcebindSource) { if(! typeof(DataRowView).IsInstanceOfType(bindSource.Current)) returnnull; DataRowViewdrv=(DataRowView)bindSource.Current; if(drv==null) returnnull; else returndrv.Row; } 33.获取表格当前项的索引 方式一: 利用BindingSource.Position MessageBox.Show(usersBindingSource.Position.ToString()); 二、数据集其它应用 1.其它 1.1 指示DataTable中的字符串比较是否区分大小写 方式一: 指示DataSet的CaseSensitive userDataSet.CaseSensitive=true; DataRow[]AryDR=userDataSet.Tables["users"].Select("CNAME='yy'"); 方式二: 指示DataTable的CaseSensitive userDataSet.Tables["users"].CaseSensitive=true; DataRow[]AryDR=userDataSet.Tables["users"].Select("CNAME='yy'"); 1.2指示在尝试执行任何更新操作时是否遵循约束规则 方式一: 指示DataSet的EnforceConstraints userDataSet.EnforceConstraints=false;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c# 数据