ADO.NET 3.5经典实例(第2版)
ADO.NET 3.5经典实例(第2版)
Bill Hamilton
徐波 等译
出版时间:2009年05月
页数:942
本书与其他关于Microsoft数据访问技术的书籍截然不同。本书的新版本并不是向读者灌输各种理论,而是提供了超过200个的代码解决方案和最佳实践,针对读者每天使用ADO.NET时所面临的真正问题。这些解决方案不仅能够解决读者的当务之急,而且可以帮助读者理解这项技术的底层概念。
本书针对Visual Studio 2008、.NET框架3.5和SQL Server 2008进行了更新,演示了如何使用LINQ和其他.NET新技术更方便、更高效地实现数据访问。
本书所提供的C#代码例子不仅完整,而且包含了详尽的注释,并且显示了程序的输出,读者在使用本书时就不必加载实际代码。另外,读者可以通过本书的网站下载Visual Basic代码。最出彩的是,本书的每个解决方案都伴有清晰的解释,说明了如何实现目标以及为什么能够实现目标,并分析了需求、利弊权衡和缺陷。这样,读者就可以学习在不同的场合采纳本书的问题解决技巧。
本书允许各个层次的.NET程序员通过实践学习这项技术。如果读者希望扩展自己的编程技能和效率,本书就是一个绝佳的向导。
本书的解决方案涵盖了下面这些内容:
* 连接数据。
* 处理断开连接数据对象。
* 查询、提取、搜索、分析、添加、修改、复制和传输数据。
* 维护数据库的完整性。
* 通过代码处理.NET Windows和Web窗体用户界面中的数据。
* 处理XML数据。
* 优化数据访问。
* 枚举和维护数据库对象。
* SQL Server CLR集成。
Bill Hamilton擅长使用.NET和Java技术开发各种解决方案。在过去的15年中,他致力于提供各种顾问服务,范围包括企业级解决方案的策略规划、启动、设计、开发和实现。他还是广受称赞的《Programming SQL Server 2005》的作者。另外,他还参与了Microsoft开发者网络(MSDN)的编写。
  1. 前言
  2. 第1章 连接数据
  3. 1.0 简介
  4. 1.1 存储连接字符串
  5. 1.2 生成连接字符串
  6. 1.3 连接到SQL Server
  7. 1.4 连接到SQL Server 的一个命名实例
  8. 1.5 使用IP地址连接到SQL Server
  9. 1.6 使用ASP.NET的集成安全性连接到SQL Server
  10. 1.7 连接到Oracle数据库
  11. 1.8 连接到OLE DB数据源
  12. 1.9 连接到ODBC数据源
  13. 1.10 连接到Microsoft Access数据库
  14. 1.11 连接到密码保护的Microsoft Access数据库
  15. 1.12 在ASP.NET中连接到Microsoft Access数据库
  16. 1.13 连接到Microsoft Excel工作簿
  17. 1.14 连接到文本文件
  18. 1.15 更改一个已打开连接的数据库
  19. 1.16 设置连接池选项
  20. 1.17 利用连接池
  21. 1.18 对池中的连接使用事务
  22. 1.19 显示连接属性对话框
  23. 1.20 显示数据链接属性对话框
  24. 1.21 监视连接
  25. 第2章 使用断开连接的数据对象
  26. 2.0 简介
  27. 2.1 创建DataColumn,并把它添加到DataTable
  28. 2.2 创建DataTable,并把它添加到DataSet
  29. 2.3 在数据源和DataSet之间映射表名和列名
  30. 2.4 把.NET数据提供程序的数据类型映射为.NET框架的数据类型
  31. 2.5 向DataTable添加一个经过计算产生的列
  32. 2.6 创建唯一性约束
  33. 2.7 创建单列和多列的主键
  34. 2.8 创建一个自动增长的主键
  35. 2.9 创建外键约束
  36. 2.10 创建数据关系
  37. 2.11 通过代码创建DataSet
  38. 2.12 向一个显示父表数据的子DataTable添加一个列
  39. 2.13 在父DataTable中添加一个列,对一个子DataTable的列值进行聚合
  40. 2.14 在DataTable和DataRow数组之间转换
  41. 2.15 访问DataRow数组中的数据值
  42. 2.16 创建一个强类型的DataSet
  43. 2.17 控制强类型DataSet 中所使用的名称
  44. 2.18 替换强类型DataSet 中的null值
  45. 第3章 查询和提取数据
  46. 3.0 简介
  47. 3.1 执行不返回结果集的查询
  48. 3.2 执行返回单值的查询
  49. 3.3 使用DataReader提取一个结果集流
  50. 3.4 访问DataReader中的数据值
  51. 3.5 使用DataTable或DataSet提取一个结果集
  52. 3.6 访问DataTable或DataSet中的数据值
  53. 3.7 处理强类型的DataSet中的数据
  54. 3.8 处理强类型的DataSet的父子关系
  55. 3.9 在强类型的DataSet中使用DataView
  56. 3.10 测试一个查询是否返回一个空的结果集
  57. 3.11 计数符合标准的记录
  58. 3.12 判断一个DataReader所返回的记录数
  59. 3.13 执行返回多个结果集的查询
  60. 3.14 提取DataSet的架构和约束信息
  61. 3.15 提取层次式数据
  62. 3.16 在无类型的DataSet中父表和子表之间浏览
  63. 3.17 执行参数化查询
  64. 3.18 使用SQL Server存储过程提取数据
  65. 3.19 使用Oracle提供程序提取多个结果集
  66. 3.20 向查询参数传递Null值
  67. 3.21 使用表-值类型作为参数
  68. 3.22 从存储过程提取返回值
  69. 3.23 提取存储过程的输出参数
  70. 3.24 触发和处理存储过程的错误
  71. 3.25 执行SQL Server标量值函数
  72. 3.26 执行SQL Server表值函数
  73. 3.27 使用LINQ查询DataSet
  74. 3.28 使用LINQ查询一个SQL Server数据库
  75. 3.29 从文本文件提取数据
  76. 3.30 从Microsoft Excel工作簿提取数据
  77. 3.31 使用消息队列异步查询数据
  78. 第4章 搜索和分析数据
  79. 4.0 简介
  80. 4.1 确定两个DataSet之间的数据差别
  81. 4.2 组合来自不同数据源的数据
  82. 4.3 在DataTable或DataView中对数据行进行过滤
  83. 4.4 查找DataTable或DataView中的数据行
  84. 4.5 对DataTable中的数据进行过滤和排序
  85. 4.6 过滤DataTable中的null字段
  86. 4.7 访问DataTable中被删除的行
  87. 4.8 选择DataTable的TOP N个行
  88. 4.9 执行使用COMPUTE BY的查询
  89. 4.10 使用Shape语言提取层次式数据
  90. 4.11 提取记录的随机样本
  91. 4.12 使用通用表表达式
  92. 4.13 执行递归式查询
  93. 4.14 提取排序结果集
  94. 4.15 提取Pivot和Unpivot表
  95. 4.16 对结果集中的每个行调用一个函数
  96. 第5章 添加和修改数据
  97. 5.0 简介
  98. 5.1 使用自动增长列,并避免产生冲突
  99. 5.2 从SQL Server获取标识列的值
  100. 5.3 从Microsoft Access获取自动编号值
  101. 5.4 从Oracle提取序列值
  102. 5.5 修改Microsoft Excel工作簿中的数据
  103. 5.6 修改文本文件中的数据
  104. 5.7 获取更新错误
  105. 5.8 添加具有自动增长键的父/子行
  106. 5.9 添加具有GUID主键的记录
  107. 5.10 使用T-SQL的行构造函数把多个行插入数据库表中
  108. 5.11 用不同数据源的数据更新一个数据源
  109. 5.12 更新主键值
  110. 5.13 在运行时获取存储过程的参数信息
  111. 5.14 更新具有多对多关系的DataSet
  112. 5.15 使用消息队列异步更新数据
  113. 5.16 用DataView控制数据的编辑、删除或添加
  114. 5.17 使用CommandBuilder 时克服关键字冲突
  115. 5.18 捕捉SQL Server 数据库中的数据修改
  116. 第6章 复制和传输数据
  117. 6.0 简介
  118. 6.1 把行从一个DataTable复制到另一个DataTable
  119. 6.2 把表从一个DataSet复制到另一个DataSet
  120. 6.3 把DataReader转换为DataTable
  121. 6.4 把DataReader转换为DataSet
  122. 6.5 把DataTable转换为DataReader
  123. 6.6 把DataSet转换为DataReader
  124. 6.7 对数据进行串行化
  125. 6.8 对数据进行反串行化
  126. 6.9 合并两个DataSet对象的数据
  127. 6.10 合并两个数据库表的数据
  128. 6.11 对DataSet进行加密
  129. 6.12 保护登录信任
  130. 6.13 把查询结果导出为字符串
  131. 6.14 把查询结果导出为数组
  132. 6.15 把ADO Recordset加载到DataSet
  133. 6.16 把DataSet转换为ADO Recordset
  134. 第7章 维护数据库的完整性
  135. 7.0 简介
  136. 7.1 使用分布式事务
  137. 7.2 使用手工事务
  138. 7.3 在SQL Server .NET数据提供程序中嵌套手工事务
  139. 7.4 协同使用ADO.NET和SQL Server DBMS事务
  140. 7.5 在DataAdapter中使用事务
  141. 7.6 在更新相关表中的数据时避免引用完整性错误
  142. 7.7 用列表达式实行业务规则
  143. 7.8 从SQL Server数据库提取约束
  144. 7.9 检查并发性错误
  145. 7.10 解决数据冲突
  146. 7.11 使用事务隔离级别保护数据
  147. 7.12 在SQL Server数据库中指定锁提示
  148. 第8章 在.NET的Windows和Web窗体用户界面中通过代码处理数据
  149. 8.0 简介
  150. 8.1 把一个字段的数据加载并绑定到一个Web窗体控件
  151. 8.2 把数据绑定到一个Web窗体控件
  152. 8.3 把数据绑定到Web窗体的DetailsView控件
  153. 8.4 把数据绑定到Web窗体的Repeater控件
  154. 8.5 把数据绑定到Web窗体的DataList控件
  155. 8.6 把数据绑定到Web窗体的GridView控件
  156. 8.7 修改和更新Web窗体控件GridView中的数据
  157. 8.8 把数据绑定到Web窗体控件FormView控件
  158. 8.9 在Web窗体应用程序中对主-明细数据进行同步
  159. 8.10 在Web窗体控件中显示数据库中的一幅图像
  160. 8.11 在Web窗体应用程序中对客户端的数据进行本地化
  161. 8.12 把数据加载到Windows Forms控件,并绑定到一个字段
  162. 8.13 把数据绑定到Windows Forms控件
  163. 8.14 把数据绑定到Windows Forms的DataGridView控件
  164. 8.15 修改和更新Widnows Forms控件DataGridView中的数据
  165. 8.16 使用Windows Forms的BindingNavigator和
  166. BindingSource控件
  167. 8.17 在Windows Forms应用程序中同步主-明细数据
  168. 8.18 在Windows Forms控件中显示一幅来自数据库的图像
  169. 8.19 把一组单选按钮绑定到一个Windows Forms日期字段
  170. 8.20 在Windows Forms的DataGridView控件中搜索数据
  171. 第9章 处理XML数据
  172. 9.0 简介
  173. 9.1 使用XML文件保存和加载DataSet或DataTable
  174. 9.2 使用XSD架构文件保存和加载DataSet结构
  175. 9.3 把数据保存为XML时对列值进行格式化
  176. 9.4 创建一个XML文件,显示对DataSet的修改
  177. 9.5 对DataSet和XML文档进行同步
  178. 9.6 用非XML数据类型列存储和提取XML
  179. 9.7 处理SQL Server的XML数据类型列
  180. 9.8 使用XPath查询提取数据
  181. 9.9 直接从SQL Server读取XML数据
  182. 9.10 使用XSLT转换DataSet
  183. 9.11 使用XML模板查询填充DataSet
  184. 9.12 使用OpenXML把多个修改更新到SQL Server
  185. 第10章 优化.NET数据访问
  186. 10.0 简介
  187. 10.1 在一个连接上执行多个命令
  188. 10.2 异步执行SQL语句
  189. 10.3 以异步方式同时执行SQL语句
  190. 10.4 异步地创建一个DataReader对象
  191. 10.5 异步地填充一个DataSet
  192. 10.6 取消一个异步查询
  193. 10.7 对数据进行缓存
  194. 10.8 提高分页性能
  195. 10.9 在SQL Server中进行XML体加载
  196. 10.10 在SQL Server中进行体拷贝
  197. 10.11 用类型访问符提高DataReader的性能
  198. 10.12 用列序号提高DataReader的性能
  199. 10.13 调试SQL Server存储过程
  200. 10.14 在填充DataSet时提高性能
  201. 10.15 在SQL Server中读取和写入大值
  202. 10.16 读取和写入SQL Server用户定义类型(UDT)
  203. 10.17 读取和写入Oracle的大数据
  204. 10.18 用DataAdapter执行批更新
  205. 10.19 定期自动刷新DataTable
  206. 10.20 当底层数据改变时自动刷新DataTable
  207. 10.21 提取SQL Server运行时统计信息
  208. 10.22 编写独立于提供程序和数据库的代码
  209. 第11章 枚举和维护数据库对象
  210. 11.0 简介
  211. 11.1 枚举SQL Server实例
  212. 11.2 提取数据库的元数据
  213. 11.3 从SQL Server提取数据库架构信息
  214. 11.4 从SQL Server提取列的默认值
  215. 11.5 确定SQL Server表中列的大小
  216. 11.6 提取SQL Server的查询计划
  217. 11.7 在不返回数据的情况下提取SQL Server的列元数据
  218. 11.8 创建一个新的SQL Server数据库
  219. 11.9 在SQL Server数据库中添加一个表
  220. 11.10 根据一个DataTable架构创建一个数据库表
  221. 11.11 根据SQL Server的数据关系创建DataSet的数据关系
  222. 11.12 创建一个新的Microsoft Access数据库
  223. 11.13 列出一个Access数据库中的表
  224. 11.14 枚举.NET数据提供程序
  225. 11.15 枚举OLE DB提供程序
  226. 11.16 枚举ODBC驱动程序
  227. 11.17 修改SQL Server的用户密码
  228. 第12章 SQL Server的CLR集成
  229. 12.0 简介
  230. 12.1 创建存储过程
  231. 12.2 创建一个标量值函数
  232. 12.3 创建一个表值函数
  233. 12.4 创建一个聚合函数
  234. 12.5 创建一个用户定义类型
  235. 12.6 创建一个DML触发器
  236. 12.7 创建一个DDL触发器
  237. 附录 ADO.NET自1.0版本以来的新变化
书名:ADO.NET 3.5经典实例(第2版)
作者:Bill Hamilton
译者:徐波 等译
国内出版社:机械工业出版社
出版时间:2009年05月
页数:942
书号:978-7-111-25617-5
原版书出版商:O'Reilly Media
Bill Hamilton
 
Bill Hamilton擅长使用.NET和Java技术开发各种解决方案。在过去的15年中,他致力于提供各种顾问服务,范围包括企业级解决方案的策略规划、启动、设计、开发和实现。他在卫生保健、职业培训、金融服务、零售和生产等领域的软件开发方面具有非常丰富的经验。他还是广受称赞的《Programming SQL Server 2005》和《ADO.NET in a Nutshell》这两本书的作者。另外,他还参与了Microsoft开发者网络(MSDN)的编写工作。读者可以通过bill.hamilton@element14.com与他联系。
 
 
本书的封面动物是一只白色篦鹭,又称普通篦鹭或欧亚篦鹭,它的名称源自它大大的、竹片状的啄。当篦鹭觅食时,它们总是在栖息的沼泽地的浅水中来回走动,用半张开的啄过滤两边的泥水。当啄内敏感的神经末端检测到可食之物时,它们就会把啄闭拢。篦鹭的典型食物包括昆虫、幼虫、甲壳动物和小鱼。
成熟的白色篦鹭从啄尖到尾部长约85厘米,翼展大约是125厘米。篦鹭的羽毛是奶白色的。但是,在喂养幼鸟的季节,成年篦鹭的胸部、面部和啄上会出现黄色的斑块。
白色篦鹭见于非洲东北部以及欧洲和亚洲的许多地区。它们在树丛中或芦苇地里筑巢。它们一般成群生活,有时侯与科的其他物种如苍鹭和鹳一起生活。雄性篦鹭负责收集筑巢材料,雌性篦鹭则把雄性篦鹭所收集的树枝和芦苇筑成浅浅的、碗状的巢。雌性篦鹭一般每年产3?4个蛋,并和雄性篦鹭共同承担孵化幼篦鹭的职责。
尽管白色篦鹭是一种濒临灭绝的物种,但由于保护措施得力,在有些地区尤其是欧洲它们的数量正在缓慢增长。由于土地清垦和杀虫剂的使用而导致的栖息地减少是白色篦鹭生存的最大威胁。