免费预览已结束,剩余4页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C DataSet 用法详解 第 1 页 DataSet 用法详细用法详细 一 特点介绍一 特点介绍 1 处理脱机数据 在多层应用程序中很有用 2 可以在任何时候查看 DataSet 中任意行的内容 允许修改查询结果的方法 3 处理分级数据 4 缓存更改 5 XML 的完整性 DataSet 对象和 XML 文档几乎是可互换的 二 使用介绍二 使用介绍 1 创建 创建 DataSet 对象 对象 DataSet ds new DataSet DataSetName 2 查看调用 查看调用 SqlDataAdapter Fill 创建的结构创建的结构 da Fill ds Orders DataTable tbl ds Table 0 foreach DataColumn col in tbl Columns Console WriteLine col ColumnName 3 查看 查看 SqlDataAdapter 返回的数据返回的数据 DataRow DataRow 对象对象 DataTable tbl ds Table 0 DataRow row tbl Row 0 Console WriteLine ros OrderID 检查存储在检查存储在 DataRowDataRow 中的数据中的数据 DataTable tbl row Table foreach DataColumn col in tbl Columns Console WriteLine row col 检查检查 DatTableDatTable 中的中的 DataRowDataRow 对象对象 foreach DataRow row in tbl Rows DisplayRow row 4 校验 校验 DataSet 中的数据中的数据 校验校验 DataColumnDataColumn 的属性 的属性 ReadOnly AllowDBNull MaxLength Unique DataTable DataTable 对象的对象的 ConstrainsConstrains 集合 集合 UiqueConstraints Primarykey ForeignkeyConstraints 通常不必刻意去创建 ForeignkeyConstraints 因为当在 DataSet 的两个 DataTable 对象之间创建关 系时会创建一个 用用 SqlDataAdapter FillSqlDataAdapter Fill 模式来检索模式信息模式来检索模式信息 5 编写代码创建 编写代码创建 DataTable 对象对象 创建创建 DataTableDataTable 对象对象 DataTable tbl new DataTable TableName 将将 DataTableDataTable 添加到添加到 DataSetDataSet 对象的对象的 TableTable 集合集合 DataSet ds new DataSet DataTable tbl new DataTable Customers ds Tables Add tbl DataSet ds new DataSet DataTable tbl ds Tables Add Customers C DataSet 用法详解 第 2 页 DataTable 对象只能存在于至多一个 DataSet 对象中 如果希望将 DataTable 添加到多个 DataSet 中 就必须使用 Copy 方法或 Clone 方法 Copy 方法创建一个与原 DataTable 结构相同并且包含相 同行的新 DataTable Clone 方法创建一个与原 DataTable 结构相同 但没有包含任何行的新 DataTable 为为 DataTableDataTable 添加列添加列 DataTable tbl ds Tables Add Orders DataColumn col tbl Columns Add OrderID typeof int col AllowDBNull false col MaxLength 5 col Unique true tbl PrimaryKey new DataColumn tbl Columns CustomersID 当设置主键时 AllowDBNull 自动设置为 False 处理自动增量列处理自动增量列 DataSet ds new DataSet DataTable tbl ds Tables Add Orders DataColumn col tbl Columns Add OrderID typeof int col AutoIncrement true col AutoIncrementSeed 1 col AutoIncrementStep 1 col ReadOnly true 添加基于表达式的列添加基于表达式的列 tbl Columns Add ItemTotal typeof Decimal Quantity UnitPrice 6 修改 修改 DataTable 内容内容 添加新添加新 DataRowDataRow DataRow row ds Tables Customers NewRow row CustomerID ALFKI ds Tables Customers Rows Add row object aValues ALFKI Alfreds Anders 030 22222 da Tables Customers LoadDataRow aValues false 修改当前行修改当前行 修改行的内容逼供内不会自动修改数据库中相应的内容 对行所做的修改被视为是随后将使用 SqlDataAdapter 对象来提交交给数据库的待定的更改 DataRow rowCustomer rowCustomer ds Tables Custoemrs Rows Find ANTON if rowCustomer null 没有查找客户 else rowCustomer CompanyName NewCompanyName rowCustomer ContactName NewContactName 推荐使用这种方式 DataRow rowCustomer rowCustomer ds Tables Custoemrs Rows Find ANTON C DataSet 用法详解 第 3 页 if rowCustomer null 没有查找客户 else rowCustomer BeginEdit rowCustomer CompanyName NewCompanyName rowCustomer ContactName NewContactName rowCustomer EndEdit null 表示不修改该列的数据 obejct aCustomer null NewCompanyName NewContactName null DataRow rowCustomer rowCustomer ds Tables Customers Rows Find ALFKI rowCustomer ItemArray aCustomer 处理处理 DataRowDataRow 的空值的空值 查看是否为空 DataRow rowCustomer rowCustomer ds Tables Customers Rows Find ALFKI if rowCustomer IsNull Phone Console WriteLine It s Null else Console WriteLine It s not Null 赋予空值 rowCustomer Phone DBNull Value 删除删除 DataRowDataRow DataRow rowCustomer rowCustomer ds Tables Customers Rows Find ALFKI rowCustomer Delete 清除清除 DataRowDataRow DataRow rowCustomer ds Tables Customers Rows Find ALFKI rowCustomer ItemArray aCustomer da Tables Customers Remove rowCustomer 或者 ds Tables Customers RemoveAt intIndex 使用使用 DataRow RowStateDataRow RowState 属性属性 Unchanged Detached Added Modified DeletedUnchanged Detached Added Modified Deleted private void DemonstrateRowState Run a function to create a DataTable with one column DataTable myTable MakeTable DataRow myRow Create a new DataRow myRow myTable NewRow Detached row Console WriteLine New Row myRow RowState C DataSet 用法详解 第 4 页 myTable Rows Add myRow New row Console WriteLine AddRow myRow RowState myTable AcceptChanges Unchanged row Console WriteLine AcceptChanges myRow RowState myRow FirstName Scott Modified row Console WriteLine Modified myRow RowState myRow Delete Deleted row Console WriteLine Deleted myRow RowState 检查检查 DataRowDataRow 中的挂起更改中的挂起更改 DataRow rowCustomer rowCustomer ds Tables Customers Rows Find ALFKI rowCustomer CompanyName NewCompanyName string strNewCompanyName strOldCompanyName Console WriteLine rowCustomer CompanyName DataRowVersion Current Console WriteLine rowCustomer CompanyName DataRowVersion Original 遍历遍历 DataSetDataSet foreach DataTable dt in dataSet Tables foreach DataRow dr in dt Rows foreach DataColumn dc in dr Table Columns Console WriteLine dr dc 三 属性方法事件介绍三 属性方法事件介绍 1 DataSet 属性属性 CaseSensitive 用于控制 DataTable 中的字符串比较是否区分大小写 DataSetName 当前 DataSet 的名称 如果不指定 则该属性值设置为 NewDataSet 如果将 DataSet 内容写入 XML 文件 DataSetName 是 XML 文件的根节点名称 DesignMode 如果在设计时使用组件中的 DataSet DesignMode 返回 True 否则返回 False HasErrors 表示 DataSet 中的 DataRow 对象是否包含错误 如果将一批更改提交给数据库并将 DataAdapter 对象的 ContinueUpdateOnError 属性设置为 True 则在提交更改后必须检查 DataSet 的 HasErrors 属性 以确定是否有更新失败 NameSpace 和和 Prefix 指定 XML 命名空间和前缀 Relations 返回一个 DataRelationCollection 对象 Tables 检查现有的 DataTable 对象 通过索引访问 DataTable 有更好的性能 方法方法 AcceptChanges 和和 RejectChanges 接受或放弃 DataSet 中所有挂起更改 调用 AcceptChanges 时 RowState 属性值为 Added 或 Modified 的所有行的 RowState 属性都将被设置为 UnChanged 任 何标记为 Deleted 的 DataRow 对象将从 DataSet 中删除 调用 RejectChanges 时 任何标记为 Added 的 DataRow 对象将会被从 DataSet 中删除 其他修改过的 DatRow 对象将返回前一状态 Clear 清除 DataSet 中所有 DataRow 对象 该方法比释放一个 DataSet 然后再创建一个相同结 C DataSet 用法详解 第 5 页 构的新 DataSet 要快 Clone 和和 Copy 使用 Copy 方法会创建与原 DataSet 具有相同结构和相同行的新 DataSet 使用 Clone 方法会创建具有相同结构的新 DataSet 但不包含任何行 GetChanges 返回与原 DataSet 对象具有相同结构的新 DataSet 并且还包含原 DataSet 中所有 挂起更改的行 GetXml 和和 GetXmlSchema 使用 GetXml 方法得到由 DataSet 的内容与她的架构信息转换为 XML 格式后的字符串 如果只希望返回架构信息 可以使用 GetXmlSchema HasChange 表示 DataSet 中是否包含挂起更改的 DataRow 对象 Merge 从另一个 DataSet DataTable 或现有 DataSet 中的一组 DataRow 对象载入数据 ReadXml 和和 WriteXml 使用 ReadXml 方法从文件 TextReader 数据流或者 XmlReader 中将 XML 数据载入 DataSet 中 Reset 将 DataSet 返回为未初始化状态 如果想放弃现有 DataSet 并且开始处理新的 DataSet 使用 Reset 方法比创建一个 DataSet 的新实例好 事件事件 MergeFailed 在 DataSet 的 Merge 方法发生一个异常时触发 2 DataTable 属性属性 方法方法 事件事件 ColumnChanged 在列的内容被改变之后触发 ColumnChangding 在列的内容被改变之前触发 RowChanged RowChanging RowDeleted RowDeleting 3 DataColumn 属性属性 4 DataRow 属性属性 HasError 确定行是否包含错误 Item 通过指定行的列数 列的名称或 DataColumn 对象本身 访问列的内容 ItemArray 获取或设置行中所有列的值 RowError 返回一个包含行错误信息的字符串 RowState 返回 DataRowState 枚举中的值来表示行的当前状态 Table 返回 DataRow 对象所在的 DataTable 方法方法 AcceptChanges 和和 RejectChanges 提交和放弃挂起更改 BeginEdit CancelEdit EndEdit ClearErrors 清除 DataRow 中所有的错误 Delete Delete 方法实际上并不从 DataRow 表的 Row 集合中删除该 DataRow 当调用 DataRow 对象的 Delete 方法时 ADO NET 将该行标记为删除 之后调用 SqlDataAdapter 对象的 Update 方法 来删除其在数据库中对应的行 如果希望彻底删除 DataRow 可以调用 Delete 方法 接着再调用它的 AccepteChanges 方法 还 可以使用 DataRowCollection 对象的 Remove 方法完成相同的任务 dataset ds new datast datatable tel new datatable ds tables add tel C DataSet 用法详解 第 6 页 string code ds tables tel rows 0 0 tostring 浅谈浅谈 DataSetDataSet 的用法的用法 DataSet 是 ADO NET 开发人员为方便数据处理开发出来的 是数据的集合 是为解决 DataReader 的缺陷设计的 DataReader 数据处理速度快 但它是只读的 而且一旦移到下一行 就 不能查看上一行的数据 DataSet 则可以自由移动指针 DataSet 的数据是与数据库断开的 DataSet 还可用于多层应用程序中 如果应用程序运行在中间层的业务对象中来访问数据库 则业务对象需 将脱机数据结构传递给客户应用程序 DataSet 的功能 浏览 排序 搜索 过滤 处理分级数据 缓存更改等 还可以与 数 据互换 DataSet 中可包括多个 DataTable 可将多个查询结构存到一个 DataSet 中 方便操作 而 DataTable 中又包括多个 DataRow DataColumn 可通过这些 DataRow DataColumn 来查看 操作 其中的数据 而需将操作结果返回给数据库的话 则可以调用 DataAdapter 的 Update 方法 DataSet 的操作 DataSet ds new DataSet DataTable dt new DataTable newTable ds Tables Add dt DataSet ds new DataSet DataTable dt ds Tables Add newTable 上述两种方法都可以在 DataSet 中添加一个 DataTable 看需要而进行选择 添加 DataTable 后 需向其 中添加行和列 DataSet ds new DataSet DataTable dt ds Tables Add newTables DataColumn col dt Columns Add newColumn typeof int col AllowDBNull false col MaxLength 4 col Unique true 上述代码向 DataSet 中的 DataTable 中添加名为 newColumn 类型为 int 且不为空 最大长度为 和唯 一性为真的列 dt PrimaryKey new DataColumn dt Columns ID 这段代码是继续上面代码的 为一个 DataTable 中添加一个主键列 主键列是一个数据组 如有多个主键 只需在数组中添加一个列即可 如下 dt PrimaryKey new DataColumns dt Columns OrderID dt Columns ProductID 添加外键 ForeignKeyConstraint fk fk new ForeignKeyConstraint ds Tables Customers Columns CustomerID ds Tab les Orders Columns CustomerID ds Tables Orders Constraints Add fk 上述代码假如已经为 Cusomers 表和 Orders 创建了主键 此句为添加外键约束 上述是根据 Customers 表和 Orders 表的 CustomerID 来创建约束 下面介绍修改 DataRow 中的内容 DataRow dr ds Tables Customer Rows Find ANTON C DataSet 用法详解 第 7 页 if dr null else dr BeginEdit dr CompanyName newValue dr ContactName newValue2 dr EndEdit 上面代码通过 Row 集合的 Find 方法来在 DataTable 中的行进行定位 找到 ANTON 行 再修改 ANTON 行 中 CompanyName 列和 ContactName 列的值 通过 BeginEdit 和 EndEdit 来缓存对行的修改 还可调用 CancelEdit 为取消修改 判断某列是否为空值 DataRow dr ds Tables Customers Rows Find aaa if dr IsNull ContactName else dr ContactName DBNull Value 这里判断 ContactName 列是否为空 如果不是则为其赋空值 呵 很无厘头的做法 这里只为演示为列赋 空值的做法 删除 DataRow 有两种方法可以删除 DataRow Delete 方法和 Remove 方法和 RemoveAt 方法 其区别是 Delete 方法实际上不是从 DataTable 中删除掉一行 而是将其标志为删除 仅仅是做个记号 而 Remove 方法则是真正的从 DataRow 中删除一行 RemoveAt 方法是根本行的索引来删除 列 DataRow dr ds Tables table Rows Find a ds Tables table Remove dr 或 ds Tables table Remove index dr 为 a 所在的行 查出后将其删除 index 为 a 所在的索引号 关于 DataSet 中的其用法 参照 MSDN DataRow dr ds Tables Customers Rows Find aaa if dr IsNull ContactName else dr ContactName DBNull Value 这里判断 ContactName 列是否为空 如果不是则为其赋空值 呵 很无厘头的做法 这里只为演示为列赋 空值的做法 using System Data using System u
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 脂肪酸酰化及酯化操作工价值创造水平考核试卷含答案
- 矿用发电车操作工风险评估与管理强化考核试卷含答案
- 砚台雕刻工客户关系管理竞赛考核试卷含答案
- 家庭照护员岗前核心管理考核试卷含答案
- 2026年教师节毕业班难忘师恩课件
- 2025年郴州市汝城县四年级数学下学期期末达标检测试题(含答案)
- 2026年教师节大学生谢师恩主题活动课件
- 2025年那曲地区尼玛县四年级数学第二学期期中考试试题(含答案)
- 2026主任医师(正高)-重症医学(正高)120历年题库含答案详解
- 红矾钾安全技术说明书
- 2026年广州市中考英语试题(含答案)
- 2026年融资专员秋招面试题及答案
- (一检)2026-2027学年福州市高三年级适应性练习物理试题(含答案)
- 北京市房屋租赁合同范本租房合同(2026版)
- 人工智能通识课件 第1章-人工智能概述
- 2026年工程监理职业技能竞赛
- 专题06文学类文本阅读-七年级下学期语文期末考试真题汇编(北京)
- 《量子力学》全本课件
- 铁塔基础根开自动计算
- YC/T 205-2017烟草及烟草制品仓库设计规范
- 防空警报试鸣暨人防演练方案
评论
0/150
提交评论