C# DataTabe使用.doc_第1页
C# DataTabe使用.doc_第2页
C# DataTabe使用.doc_第3页
C# DataTabe使用.doc_第4页
全文预览已结束

下载本文档

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

文档简介

static void Main(string args) /表关系、键、添加、删除、更新、查询、排序、行状态与版本 /行状态与版本关系到更新数据库的方式 /创建一个班级表 DataTable dtClass = new DataTable(Class); /定义列 DataColumn col1 = new DataColumn(ClassID, typeof(int); /自增列设置 col1.AllowDBNull = false; col1.AutoIncrement = true; col1.AutoIncrementSeed = 1; col1.AutoIncrementStep = 1; DataColumn col2 = new DataColumn(ClassName,typeof(string); dtClass.Columns.AddRange(new DataColumn col1,col2 ); /定义主键 dtClass.PrimaryKey = new DataColumn col1 ; /添加行方式一 DataRow dr1 = dtClass.NewRow(); dr1.BeginEdit(); /提升修改数据效率 dr1ClassName = 软件041; dr1.EndEdit(); dtClass.Rows.Add(dr1); /添加行方式二 DataRow dr2 = dtClass.NewRow(); dr2.ItemArray = new object null,软件051 ; dtClass.Rows.Add( dr2 ); /RejectChanges 会移除行状态为 Added 的所有行。 剩余行的行状态为 Unchanged,并且 Current 行版本中的值将被 Original 行版本值覆盖。 /AcceptChanges 会移除行状态为 Deleted 的所有行。 剩余行的行状态为 Unchanged,并且 Original 行版本中的值将被 Current 行版本值覆盖。 /以上2行数据作为源数据 dtClass.AcceptChanges(); DataView dv = new DataView(dtClass); /添加行方式三 object obj1 = new object null,软件061 ; dtClass.Rows.Add(obj1); object obj2 = new object null, 网络041 ; dtClass.Rows.Add(obj2); /查找已添加的新行,以上相当于从数据库读取了2条记录,然后用程序向源DataTable添加了两行,变成四行。 dv.RowStateFilter = DataViewRowState.OriginalRows; PrintView(dv, 源数据行); dv.RowStateFilter = DataViewRowState.Added; PrintView(dv, 已添加的新行); dv.RowStateFilter = DataViewRowState.CurrentRows; PrintView(dv, 当前所有行); /普通查询 DataRow rows = dtClass.Select( ClassID 1, ClassID DESC); Console.WriteLine(n-); Console.WriteLine(班级ID大于1的数据,并以ClassID降序); foreach (DataRow drTemp in rows) Console.WriteLine(班级ID:0,名称:1, drTempClassID.ToString(), drTempClassName); /有主键的查询方式 Console.WriteLine(n-); Console.WriteLine(查询班级ID等于1的数据); DataRow drPrimary = dtClass.Rows.Find(1); Console.WriteLine(班级ID:0,名称:1, drPrimaryClassID.ToString(), drPrimaryClassName); /删除 drPrimary.Delete(); Console.WriteLine(n-); Console.WriteLine(删除班级ID等于1的数据,更新班级ID过2的名称为软件071); /更新 /当当前数据有删除行的时候,使用此Find方式查询 /会报不能通过已删除的行访问该行的信息错误,改用Select指明查询当前版本 /Current:行的当前值。 如果行的 RowState 为 Deleted,则不存在此行版本。 /Original:行的原始值。 如果行的 RowState 为 Added,则不存在此行版本。 /DataRow dr4 = dtClass.Rows.Find(3);/或者 dtClass.Rows2; /dr4.BeginEdit(); /dr4ClassName = 软件071; /dr4.EndEdit(); /foreach (DataRow drTemp in dtClass.Rows) / / Console.WriteLine(班级ID:0,名称:1, drTempClassID.ToString(), drTempClassName); / DataRow drsUpdate = dtClass.Select( ClassID=2 , null, DataViewRowState.CurrentRows); foreach (DataRow drUpdate in drsUpdate) drUpdateClassName = 软件071; /访问已删除行的方式一 dv.RowStateFilter = DataViewRowState.Deleted; PrintView(dv, 已删除的行方); dv.RowStateFilter = DataViewRowState.ModifiedCurrent; PrintView(dv, 已更新的行值); dv.RowStateFilter = DataViewRowState.ModifiedOriginal; PrintView(dv, 更新前的行值); dv.RowStateFilter = DataViewRowState.CurrentRows; PrintView(dv, 当前数据行); dv.RowStateFilter = DataViewRowState.OriginalRows; PrintView(dv, 源数据行); /访问已删除行的方式二 /Deleted 行没有 Current 行版本,因此在访问列值时必须传递 DataRowVersion.Original /Console.WriteLine(n-); /Console.WriteLine(已删除的行方式二); /DataRow drsDeleted = dtClass.Select(null, null, DataViewRowState.Deleted); /foreach (DataRow drDeleted in drsDeleted) / / foreach (DataColumn catCol in dtClass.Columns) / / Console.Write(drDeletedcatCol, DataRowVersion.Original + t); / / Console.WriteLine(); / /排序 /使用DataView对象来处理,DataView对象并非将DataTable数据复制一份,而是将DataRow的指针复制到内部数组,对数组进行排序 /默认为OriginalRows版本,设置排序当前版本 dv.RowStateFilter = DataViewRowState.CurrentRows; dv.Sort = ClassID DESC; dv.RowFilter = ClassName LIKE %软件% ; /dv.Find(); dv.FindRows(); Console.WriteLine(n-); Console.WriteLine(使用DataView排序与筛选); foreach (DataRowView drvTemp in dv) Console.WriteLine(班级ID:0,名称:1, drvTempClassID.ToString(), drvTempClassName); dtClass.AcceptChanges(); /使用DataSet创建表之间的关系 /建立学生表与主外键关系 DataSet dsStudentInfo = new DataSet(StudentInfo); DataTable dtStudent = new DataTable(Student); DataColumn colS1 = new DataColumn(StudentID, typeof(int); colS1.AllowDBNull = false; colS1.AutoIncrement = true; colS1.AutoIncrementSeed = 1; colS1.AutoIncrementStep = 1; DataColumn colS2 = new DataColumn(ClassID, typeof(int); DataColumn colS3 = new DataColumn(StudentName, typeof(string); dtStudent.Columns.AddRange(new DataColumn colS1, colS2, colS3 ); dtStudent.PrimaryKey = new DataColumn colS1 ; /创建主从关系 dsStudentInfo.Tables.AddRange(new DataTable dtClass , dtStudent ); dsStudentInfo.Relations.Add(StudentClass, dtClass.ColumnsClassID, dtStudent.ColumnsClassID); DataRow drS1 = dsStudentInfo.TablesStudent.NewRow(); drS1.ItemArray = new object null, 2, 黎明 ; dtStudent.Rows.Add(drS1); DataRow drS2 = dtStudent.NewRow(); drS2.ItemArray = new object null, 2, 刘德华 ; dtStudent.Rows.Add(drS2); DataRow drS3 = dtStudent.NewRow(); drS3.ItemArray = new object null, 3, 周润发 ; dtStudent.Rows.Add(drS3); DataRow drS4 = dtStudent.NewRow(); drS4.ItemArray = new object null, 4, 张学友 ; dtStudent.Rows.Add(drS4); Console.WriteLine(n-); Console.WriteLine(查询071班下面的学生); DataRow drsClass = dsStudentInfo.TablesClass.Select( ClassID =2 ); foreach (DataRow drStudnet in drsClass0.GetChildRows(StudentClass)/子表可以用GetParentRows Console.WriteLine(string.Format(班级名称:0,学生ID:1,学生姓名:2, drsClass0ClassName, drStudnetStudentID, drStudnetStudentName); Console.WriteLine(n-); Console.WriteLine(将软071修改为软件081); /创建关系后实现级联删除与更新 dsStudentInfo.RelationsStudentClass.ChildKeyConstraint.UpdateRule = Rule.Cascade;/同时更新与删除 DataRow dr3 = dtClass.Rows.Find(2); dr3.BeginEdit(); dr3ClassName = 软件081; dr3.EndEdit(); DataRow drsClass1 = dsStudentInfo.TablesClass.Select( ClassID =2 ); foreach (DataRow drStudnet in drsClass10.GetChildRows(StudentClass

温馨提示

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

评论

0/150

提交评论