c数据集.docx

上传人:b****5 文档编号:3373253 上传时间:2022-11-22 格式:DOCX 页数:14 大小:20.71KB
下载 相关 举报
c数据集.docx_第1页
第1页 / 共14页
c数据集.docx_第2页
第2页 / 共14页
c数据集.docx_第3页
第3页 / 共14页
c数据集.docx_第4页
第4页 / 共14页
c数据集.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

c数据集.docx

《c数据集.docx》由会员分享,可在线阅读,更多相关《c数据集.docx(14页珍藏版)》请在冰豆网上搜索。

c数据集.docx

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;

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1