目录 1
第1章 ADO.NET非连接类概述 1
1.1 DataTable对象 2
1.1.1 添加DataColumn对象以创建一个模式 2
1.1.2 创建主键列 3
1.1.3 创建用于存储数据的DataRow对象 4
1.1.4 枚举DataTable对象 9
1.1.5 复制和克隆DataTable对象 10
1.1.6 使用DataTable对象处理XML数据 11
1.1.7 将DataView对象作为窗口添加到DataTable对象中 14
1.1.8 使用一个DataSet对象处理大量数据 16
1.1.9 更特殊的类型化DataSet对象 18
1.1.10 使用DataRelation对象导航家族树 19
1.1.11 序列化和解序DataSet对象 22
1.1.12 使用Merge方法合并DataSet数据 30
1.2 使用DataTableReader遍历数据 31
1.3 小结 33
第2章 ADO.NET连接类概述 34
2.1 使用“提供者类”移动数据 34
2.1.1 首先介绍DbConnection对象 35
2.1.2 DbCommand对象 44
2.1.3 DbDataReader对象 48
2.1.4 使用多个活动结果集对单个连接执行多条命令 49
2.1.5 使用SqlBulkCopy对象执行批量复制操作 51
2.1.6 DbDataAdapter对象 52
2.1.7 DbProviderFactory类 57
2.1.8 DbProviderFactories类 60
2.1.9 枚举数据源 62
2.1.10 使用DbException捕获提供者异常 64
2.2 小结 64
第3章 ADO.NET跟踪日志 65
3.1 建立跟踪 65
3.1.1 使用logman.exe实用工具 67
3.1.2 性能日志和警告管理单元 69
3.1.3 使用事件跟踪日志文件 71
3.1.4 使用LogParser实用工具 73
3.1.5 将跟踪用作诊断工具 74
3.2 小结 75
4.1 建立精确的连接字符串 76
第4章 连接到数据存储区(高级主题) 76
4.2 连接池 80
4.2.1 创建和打开连接 80
4.2.2 连接池在哪儿 81
4.2.3 何时创建连接池 82
4.2.4 连接在池中的生存时间是多少 82
4.2.5 超出连接池容量 82
4.2.6 何时关闭连接池 85
4.2.7 清除连接池 86
4.2.8 使用容错恢复技术 88
4.3 异步数据访问 91
4.3.1 同步访问对比异步访问 91
4.3.2 使用SQL Server提供者的统计功能 94
4.4 小结 97
5.1 理解并发问题 98
第6章 使用非连接数据 98
解决并发冲突 99
5.2 设计非连接数据 100
5.2.1 应加载什么数据 101
5.2.2 选择主键 102
5.3 GUID的用法 107
5.3.1 复制/粘贴GUID 107
5.3.2 在非联接表中使用同名的主键列 108
5.3.3 查找数据库中的GUID 108
5.3.4 查找数据库中所有使用GUID的位置 109
5.4 建立冲突解决界面 110
5.4.1 创建项目 110
5.4.2 扩展类型化DataSet类CustomerDataSet 112
5.4.3 扩展TableAdapter类TblCustomerTableAdapter,以导出ContinueUpdateOnError属性 113
5.4.4 使DataSet非连接对象与数据库服务器同步 114
5.4.5 创建冲突解决界面 115
5.4.6 调用冲突解决界面 119
5.4.7 使用冲突解决界面改正并发错误 120
5.4.8 建立一个更好的冲突解决界面 123
5.5 小结 123
第6章 处理关联的非连接数据 124
6.1 导航关系 124
6.2 创建约束 125
6.3 更新数据:引入数据访问层 127
6.3.1 获取关系 128
6.3.2 获取表列 130
6.3.3 排序表列 130
6.3.4 使用OrderedTableList对象执行更新操作 136
6.3.5 测试关联更新 140
6.3.6 关于DAL更新的提示 142
6.4 小结 142
第7章 使用Windows数据网格控件 144
7.1 理解DataGridView控件 144
7.1.1 使用样式进行格式化 145
7.1.2 DataGridView的操作模式 146
7.1.3 绑定数据源 146
7.1.4 资源共享 147
7.1.5 创建DataGridView对象 147
7.1.6 处理单元格事件 149
7.1.7 使用DataGridViewColumn对象 153
7.1.8 使用DataGridViewRow对象 161
7.1.9 实现virtual模式 162
7.2 小结 171
第8章 使用Web数据网格控件 172
8.1 理解GridView控件 172
8.1.1 使用样式进行格式化 174
8.1.2 绑定数据源 174
8.2 创建GridView对象 176
8.2.1 查看HTML源文件中的声明性标记 179
8.2.2 以编程方式创建GridView对象 181
8.2.3 处理GridView对象的事件 186
8.2.4 处理列对象 188
8.3 小结 203
第9章 处理SQLCLR 204
9.1 SQLCLR能否取代T-SQL 204
9.2 不使用Visual Studio创建存储过程 205
9.2.2 创建源代码 206
9.2.1 启用SQLCLR 206
9.2.3 使用上下文对象 207
9.2.4 编译代码 207
9.2.5 加载程序集 207
9.2.6 修改执行权限 208
9.2.7 注册存储过程 209
9.2.8 执行存储过程 209
9.2.9 刷新程序集 209
9.2.10 查看已安装的程序集及其权限 210
9.2.11 使用参数传输数据 210
9.3 使用Visual Studio创建存储过程 212
9.4.1 传递代码中生成的行集数据 214
9.4 传递行集数据 214
9.4.2 传递数据库行集中的数据 220
9.5 创建用户自定义函数 221
9.5.1 使用标量函数 222
9.5.2 使用流表值函数(TVF) 224
9.6 处理用户自定义聚集 227
9.7 处理触发器 230
9.8 处理用户自定义类型 232
9.8.1 何时不使用UDT 237
9.8.2 何时使用UDT 237
9.9 在客户端访问SQLCLR特征 240
9.10 小结 242
10.1 什么是事务 244
10.1.1 并发模型和数据库锁定 244
第10章 理解事务 244
10.1.2 事务的孤立级别 245
10.1.3 单个事务和分布式事务 246
10.2 创建事务 246
10.2.1 使用T-SQL创建事务 247
10.2.2 使用ADO.NET的DbTransaction对象创建事务 247
10.3 设置事务的孤立级别 248
10.4 System.Transactions命名空间 250
10.4.1 使用TransactionScope类创建事务 250
10.4.2 设置事务选项 252
10.4.3 处理分布式事务 253
10.4.4 建立自己的事务资源管理器 257
10.4.5 在SQLCLR中使用System.Transactions命名空间 266
10.6 小结 267
10.5 最佳实践 267
第11章 获取元数据 269
11.1 开始了解元数据 269
11.2 获取元数据集合 272
11.2.1 模式导航 274
11.2.2 导航元数据集合 275
11.2.3 处理约束 276
11.2.4 修改和扩展元数据 282
11.2.5 理解惟一标识符部分 285
11.3 小结 285
第12章 缓存数据以提高性能 286
12.1 使用SqlDependency类 286
12.1.1 缓存哪些数据 286
12.1.3 SqlDependency类的工作机制 287
12.1.2 SqlDependency类是否适合你 287
12.1.4 查询注意事项 289
12.1.5 在SQL Serverk中创建SqlDependency对象 289
12.1.6 使用SqlDependency对象 290
12.1.7 选择通信渠道 292
12.2 ASP.NET SQL缓存无效 293
12.2.1 使用轮流检测技术以使缓存无效 293
12.2.2 在SQL Server上使用轮流检测技术的准备工作 293
12.2.3 创建使用轮流检测技术的Web站点 295
12.2.4 在启用轮流检测技术之前测试该应用程序 295
12.2.5 在Web应用程序中启用轮流检测技术 296
12.2.6 在启用轮流检测技术后测试该应用程序 297
12.2.7 使用命令通知来使缓存无效 298
12.3 小结 300
第13章 实现安全性 302
13.1 应用程序安全性概述 302
13.1.1 身份验证 302
13.1.2 授权 303
13.1.3 身份模拟 304
13.1.4 委派 304
13.1.5 基于角色的安全性 306
13.1.6 代码访问安全性 307
13.2 SQL Server安全性 321
13.2.1 SQL Server身份验证 321
13.2.2 SQL Server授权 323
13.3 ADO.NET安全性 324
13.3.1 支持部分信任 324
13.3.2 在Web应用程序中存储加密的连接字符串 327
13.3.3 防止SQL注入式攻击 329
13.3.4 使用存储过程 335
13.4 小结 335
第14章 处理大型对象 337
14.1 什么是LOB、BLOB和CLOB 337
14.1.1 LOB的存储位置 338
14.1.2 处理LOB 338
14.1.3 读取BLOB数据 338
14.1.4 写入BLOB数据 344
14.2 小结 346
第15章 处理XML数据 347
15.1 介绍XPath和XQuery 347
15.3 xml数据类型 348
15.2 为什么要将XML数据存入SQL Server 2005 348
15.3.1 使用模式集合实现“类型化”xml列 349
15.3.2 获取和修改XML数据 349
15.3.3 建立xml列的索引 350
15.4 开始了解xml数据类型 351
15.4.1 对XPath使用query方法 351
15.4.2 对XQuery使用query方法 357
15.4.3 对XQuery使用exist方法 375
15.4.4 使用modify方法修改数据 376
15.4.5 使用nodes方法修改数据 380
15.4.6 编写xml列的索引 385
15.5 在ADO.NET中使用XML 386
15.6 小结 395