.net中dataset的保存回数据库的操作指南

关于.net中dataset的保存问题,一般是使用dataadpter.update()方法,这个方法有四个重载,也就是三种方法:

A、.update(dataset)更新整个数据集

B、.update(datatable)或.update(dataset,tablename)  更新数据集中的指定表

C、.update(datarow())更新指定的datarow数组

 

考虑到以下场景:

1、数据量较大,且是master/detail(多个表)组成的数据集,要求保存速度够快;

2、一些字段是由另一些字段通过触发器生成的(如出生日期不是由用户录入,而是由身份证号生成的);

3、对于新增的记录,需要返回identity值,用于标识新增记录,从面继续新增子记录;

 使用A、B方法,可以满足2、3种场景需要,但1不能满足,且容易造成脏数据(请读者自行查询)

使用da.update(dataset.getchanges())或者da.update(datatable.getchanges()),可以带来速度上的增快,但不知怎么回事,第2、3种要求达不到了,返回不了更新的值(da的insertcommandtext中考虑了新增后,再select新记录录[及字段indentity]的场景);试验了很多种办法,查询了网上资料,发现只有C方法是最合适的。下面是源程序,注意变色部分,供参考:

 Public Sub Update()

        Dim conn As SqlConnection = da(0).SelectCommand.Connection'设置事务

        If Not conn.State = ConnectionState.Open Then
            conn.Open()
        End If
        Dim tr As SqlTransaction = conn.BeginTransaction

        Try

            For i = 0 To da.Length - 1
                da(i).DeleteCommand.Transaction = tr
                da(i).UpdateCommand.Transaction = tr
                da(i).InsertCommand.Transaction = tr
            Next

            For i = 0 To da.Length - 1
                If Not dsData.Tables(i).GetChanges Is Nothing Then
                    da(i).Update(dsData.Tables(i).Select("", "", DataViewRowState.Deleted Or DataViewRowState.ModifiedCurrent Or DataViewRowState.Added))
                End If

            Next

            dsData.AcceptChanges()
            tr.Commit()

        Catch xx As DBConcurrencyException
            xx.Row.RejectChanges()
            tr.Rollback()
            MsgBox("准备更新的行已被其它用户修改,不能保存")

        Catch ex As Exception
            tr.Rollback()
            mBase.ShowErrorMessage(ex.Source, ex.Message)
        Finally
            conn.Close()
        End Try

    End Sub

 呵呵,完工

已标记关键词 清除标记
本书是使用Microsoft Visual Studio .NET和ADO.NET编写高可伸缩性、可用Web数据库应用程序的开发人员必备指南。介绍了如何使用ADO.NET在企业级的Web应用程序访问、排序和处理数据。通过书丰富的实例和工具,读者能够了解编写、测试与调试数据库应用程序代码的方法。本书还介绍了ADO.NET对象模型,用于Web扩展性的XML特性,与SQL Server 2000的集成。 全书共分5大部分。第I部分提供了ADO.NET对象模型的概要叙述,并且提供了【数据窗体向导】的指导内容。第Ⅱ部分介绍了如何使用.NET数据提供程序的不同对象——Connection、Command、DataReader和DataAdapter对象。第Ⅲ部分包含了对ADO.NET对象模型的脱机对象的讨论——DataSet、DataTable、DataColumn、DataRow、DataRelation和DataView对象。这一部分还介绍了使用DataAdapter向数据库提交更改的基本和高级场景,还讨论了ADO.NET的XML特性。第Ⅳ部分介绍了使用ADO.NET建立有效率的Windows应用程序和Web应用程序的技术。第V部分是附录。 第I部分 开始使用ADO.NET 第1章 ADO.NET概述 1.1 为什么引入新的对象模型? 1.2 ADO.NET对象模型 1.2.1 .NET数据提供程序 1.2.2 为什么使用分离的类和库 1.2.3 本书对.NET数据提供程序的介绍 1.2.4 连接的对象 1.2.5 断开连接的对象 1.2.6 元数据 1.2.7 强类型DataSet对象 1.3 常见问题 第2章 使用数据窗体向导生成ADO.NET应用程序 2.1 演示 2.2 用数据窗体向导生成数据绑定窗体 2.2.1 选择连接 2.2.2 从数据库选择表 2.2.3 在DataSet创建关系 2.2.4 选择要显示的列 2.2.5 选择显示样式 2.3 使用新的数据绑定窗体 2.3.1 在新数据绑定窗体显示数据 2.3.2 利用DataRelation对象进行级联更改 2.3.3 向数据库提交更改 2.3.4 组件托盘 2.4 以数据窗体向导作为起始点 2.5 常见问题 第II部分 连接:使用.NET数据提供程序 第3章 与数据库连接 3.1 使用Connection对象 3.1.1 创建Connection对象 3.1.2 连接字符串 3.1.3 开放及关闭连接 3.1.4 连接池 3.1.5 销毁连接 3.1.6 使用连接创建其他对象 3.1.7 获取数据库架构信息 3.2 Visual Studio.NET设计时特性 3.2.1 在【服务器资源管理器】处理Connection对象 3.2.2 向【服务器资源管理器】添加数据连接 3.2.3 向应用程序添加连接 3.2.4 在运行时使用新连接 3.2.5 代码到哪里去了? 3.3 OleDbConnection对象参考 3.3.1 OleDbConnection对象的属性 3.3.2 OleDbConnection对象的方法 3.3.3 OleDbConnection对象事件 3.4 常见问题 第4章 数据库查询 4.1 在代码使用Command对象 4.1.1 创建Command对象 4.1.2 执行无返行的查询 4.1.3 用DataReader对象检查查询结果 4.1.4 执行返单值的查询 4.1.5 执行参数化查询 4.1.6 调用存储过程 4.1.7 从输出参数获取数据 4.1.8 在Transaction执行查询 4.2 在Visual Studio.NET创建Command对象 4.2.1 从工具箱拖放 4.2.2 指定一个连接 4.2.3 使用查询生成器 4.2.4 在代码使用新的Command对象 4.2.5 从【服务器资源管理器】拖放 4.3 Command、DataReader以及Parameter对象参考 4.3.1 OleDbCommand对象的属性 4.3.2 OleDbCommand对象的方法 4.3.3 OleDbDataReader对象的属性 4.3.4 OleDbDataReader对象的方法 4.3.5 创建Parameter对象 4.3.6 OleDbParameter对象的属性 4.4 常见问题 第5章 用DataAdapter对象获取数据 5.1 什么是DataAdapter对象 5.1.1 DataAdapter与其他查询对象的不同之处 5.1.2 DataAdapter剖析 5.2 创建和使用DataAdapter对象 5.2.1 创建DataAdapter 5.2.2
相关推荐
ASP.NET 2.0+SQL Server 2005全程指南 目录 基础篇 第1章 ASP.NET概述及环境配置 1.1 认识ASRNET 1.1.1 .NET Framework框架 1.1.2 ASP.NET功能与特性 1.1.3 ASP.NET与ASP的区别 1.2 搭建ASP.NET开发环境 1.2.1 安装与配置IIS 1.2.2 安装与配置Visual Studi0.NET 2005 1.3 常用功能窗口介绍 1.3.1 主窗口 1.3.2 文档窗口 1.3.3 工具箱窗口 1.3.4 属性窗口 1.3.5 解决方案资源管理器窗口 1.3.6 错误窗口 1.4 第一个ASENET程序 1.5 本章小结 第2章 C#程序设计基础 2.1 C#语言简介 2.2 C#的数据类型 2.2.1 值类型 2.2.2 引用类型 2.2.3 装箱和拆箱 2.3 C#语言的变量和常量 2.3.1 变量 2.3.2 常量 2.4 C#语言操作符和表达式 2.4.1 赋值运算符 2.4.2 算术运算符 2.4.3 比较(关系)运算符 2.4.4 逻辑运算符 2.4.5 位运算符 2.5 C#语言的控制语句 2.5.1 选择语句 2.5.2 循环语句 2.6 异常处理 2.6.1 用trycatch捕获异常 2.6.2 用tryfinally清除异常 2.6.3 用trycatchfinally处理所有的异常 2.7 面向对象程序设计 2.7.1 成员 2.7.2 类的可访问性 2.7.3 构造函数和析构函数 2.7.4 封装 2.7.5 继承 2.7.6 多态 2.8 C#样语言高级特性 2.8.1 接口 2.8.2 事件 2.8.3 预处理指令 2.8.4 反射 2.8.5 线程 2.9 本章小结 进阶篇 第3章 ASP.NET 2.0常用服务器控件 3.1 使用基本控件 3.1.1 TextBox控件的应用 3.1.2 Label控件的应用 3.1.3 DropDownList和ListBox控件应用 3.1.4 CheckBOX和CheckBoxList控件应用 3.1.5 RadioButton和RadioButtonList控件应用 3.2 ASP.NET 2.0新增控件 3.2.1 BulletedList控件的应用 3.2.2 Substitution控件的应用 3.2.3 Wizard控件的应用 3.2.4 MultiView和View控件的应用 3.2.5 FileUpload控件的应用 3.3 其他常用控件 3.3.1 Calendar控件的应用 3.3.2 AdRotator控件的应用 3.3.3 Xml控件的应用  3.4 本章小结 第4章 验证控件 4.1 非空验证 4.2 范围验证 4.3 比较验证 4.4 使用正则表达式验证 4.5 自定义验证 4.6 本章小结 第5章 ASP.NET 2.0对象、状态和配置 5.1 Response对象和Request对象 5.1.1 Response对象 5.1.2 Request对象 5.2 HTTP请求上下文 5.2.1 应用程序状态 5.2.2 Server对象 5.2.3 使用Server对象Execute()和Transfer()方法重定向页面 5.2.4 Global.asax文件 5.3 状态管理 5.3.1 Application对象 5.3.2 Session对象 5.3.3 Cookie对象 5.3.4 ViewState对象 5.4 配置ASP.NET应用程序 5.4.1 Web.config文件概述 5.4.2 配置数据库链接字符串 5.4.3 添加自定义Web.Config文件配置节 5.4.4 对Web.Config文件进行读写操作 5.4.5 加密和解密Web.Config文件的配置节 5.4.6 ASP.NET网站管理工具 5.4.7 ASP.NET MMC管理单元 5.5 本章小结 第6章 数据源控件 6.1 SqlDataSource数据源控件 6.2 AccessDataSource数据源控件 6.3 XmlDataSource数据源控件 6.4 SiteMapDataSource数据源控件 6.5 0bjectDataSource数据源控件 6.6 本章小结 第7章 SQL Server 2005常用操作 7.1 SQL Server 2005 7.1.1 SQL Server 2005概述 7.1.2 安装SQL Server 2005数据库 7.1.3 连接数据库服务器 7.1.4 修改登录方式 7.2 管理数据库的基本对象 7.2.1 创建数据库 7.2.2 备份数据库 7.2.3 还原数据库 7.2.4 附加数据库 7.2.5 删除数据库 7.2.6 创建和修改袁 7.2.7 删除袁 7.3 SQL常用语句 7.3.1 获取指定条件的记录 7.3.2 获取指定数量的记录 7.3.3 对记录进行排序 7.3.4 模糊查询 7.3.5 对数据进行分组统计 7.3.6 嵌套查询 7.3.7 插入记录并返ID 7.3.8 同时更新多条记录 7.3.9 根据条件删除记录 7.4 存储过程 7.4.1 使用存储过程添加数据 7.4.2 使用存储过程查询数据 7.4.3 使用存储过程更新数据 7.4.4 使用存储过程删除数据 7.4.5 存储过程与输出参数 7.5 本章小结 第8章 ADO.NET编程基础 8.1 AD0.NET的基本对象及其操作 8.1.1 Connection对象(连接数据库) 8.1.2 Command对象 8.1.3 DataReader对象 8.1.4 DataAdapter和DataSet对象 8.1.5 使用DataView过滤数据 8.1.6 动态创建DataTable对象 8.2 数据绑定 8.2.1 简单数据绑定 8.2.2 复杂数据绑定 8.2.3 Eval0方法和Bind()方法绑定数据 8.3 本章小结 第9章 GridView及其他数据控件的应用 9.1 GridView控件的应用 9.1.1 GridView控件的概述 9.1.2 使用GridView控件的绑定列绑定数据 9.1.3 使用GridView控件的模板列绑定数据 9.1.4 使用GridView控件编辑并删除数据 9.1.5 使用GridView控件分页显示数据 9.1.6 对GridView控件的数据进行排序 9.2 其他数据控件的应用 9.2.1 使用Repeater控件显示数据 9.2.2 在Repeater控件分页显示数据 9.2.3 使用DetailsView控件操作一条记录 9.2.4 使用FormView控件更新和插入数据 9.3 本章小结 高级篇 第10章 导航与登录 10.1 站点导航 10.1.1 Menu控件 10.I.2 SiteMapPath控件 10.1.3 TreeView控件 10.2 站点登录 10.2.1 创建新用户 10.2.2 用户登录 10.3 本章小结 第11章 母版页 11.1 母版页概述 11.1.1 母版页的基础知识 11.1.2 母版页运行机制 11.2 创建母版页 11.3 创建内容页 11.4 本章小结 第12章 WebPart部件 12.1 WebPart基础知识 12.1.1 WebPart部件概述 12.1.2 W曲部件具体应用 12.1.3 Web部件基本控件 12.2 创建WebPart控件 12.2.1 WebPartManager控件 12.2.2 WebPart和WebPartZone控件简介 12.3 编辑WebPart控件 12.3.1 EditorZone控件简介 12.3.2 AppearanceEditorPart控件简介 12.3.3 BehaviorEditorPart控件简介 12.3.4 LayoutEditorPart控件简介 12.3.5 PropertyGridEditorPart控件简介 12.3.6 实现编辑WebPart控件 12.4 管理WebPart控件 12.4.1 CatalogZone控件简介 12.4.2 DeclarativeCatalogPart控件简介 12.4.3 PageCatalogPart控件简介 12.4.4 ImportCatalogPart控件简介 12.5 W曲部件个性化设置概述 12.5.1 个性化设置的工作方式 12.5.2 个性化设置和其他ASENET功能 12.6 本章小结 第13章 高级数据处理 13.1 文件处理 13.1.1 访问目录和文件 13.1.2 写入数据 13.1.3 上传文件 13.1.4 下载文件 13.2 XML操作 13.2.1 创建XML文件 13.2.2 写入XML文件 13.2.3 读取XML文件 13.3 其他数据处理 13.3.1 读取注册表信息 13.3.2 获取文件信息 13.4 本章小结 第14章 ASP.NET AJAX相关技术简介 14.1 Ajax概述 14.1.1 什么是Ajax 14.1.2 Ajax的工作原理 14.1.3 Ajax的优势与不足 14.2 ASP.NET AJAX 14.2.1 ASENET AJAX的特性 14.2.2 ASENET AJAX的安装 14.3 ASENET AJAX控件 14.3.1 ScriptManager控件 14.3.2 ScriptManagerProxy控件 14.3.3 UpdatePanel控件 14.3.4 UpdateProgress控件 14.3.5 Timer控件 14.4 本章小结 实践篇 第15章 个人网站初学者工具包 15.1 个人网站初学者工具包概述及创建 15.2 系统通用类及配置文件 15.2.1 配置文件(Web.Config) 15.2.2 存储过程设计 15.2.3 系统通用类设计 15.3 母版页设计 15.4 系统实现 15.4.1 系统主页 15.4.2 用户注册 15.4.3 用户登录 15.4.4 浏览相册 15.4.5 下载照片 15.5 后台管理 15.5.1 创建相册 15.5.2 编辑和删除相册 15.5.3 添加照片 15.5.4 编辑和删除照片 15.6 本章小结 第16章 办公自动化系统 16.1 系统总体设计 16.1.1 系统功能描述 16.1.2 系统架构设计 16.2 系统模块设计 16.2.1 系统功能模块划分 16.2.2 功能模块设计 16.3 数据库设计 16.3.1 数据库表之间的关系 16.3.2 数据库表结构的详细设计 16.4 数据库操作类的设计 16.5 用户登录和注册 16.5.1 用户登录 16.5.2 用户注册 16.6 用户管理及角色管理 16.6.1 用户管理 16.6.2 角色管理 16.7 用户考勤及设置 16.7.1 用户考勤 16.7.2 考勤设置 16.8 站内短信 16.8.1 发送站内短信 16.8.2 收件箱 16.8.3 发件箱 16.9 请假信息管理 16.9.1 填写请假表单 16.9.2 查看审批进度 16.9.3 审批请假信息 16.10 我的通讯录 16.10.1 添加通信记录 16.10.2 查看和编辑通讯录 16.10.3 编辑和删除通讯录分类信息 16.11 部门及职位管理 16.11.1 添加部门 16.11.2 部门管理 16.11.3 添加职位 16.11.4 职位管理 16.12 我的文档管理 16.12.1 上传文档 16.12.2 文档下载 16.12.3 文档管理 16.13 公文流转 16.13.1 新建公文流转 16.13.2 查收公文文件 16.14 本章小结
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页