标题：C#开发实战1200例（第II卷）
图书信息
书名：《C#开发实战1200例（第Ⅱ卷）》  
作者：明日科技 王小科 王军              
出版社：清华大学出版社                                
ISBN：9787302251552  出版时间：2011-6-1 
定价： 99RMB
内容简介
本书以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心，介绍了应用C#进行程序开发各个方面的知识和技巧，主要包括鼠标与键盘控制、Windows系统开发、数据库及LINQ开发、水晶报表与打印、注册表操作、软件安全控制等。全书分6篇21章，共计600个实例和600条经验技巧。每个实例都是作者精心筛选的，具有很强的实用性，其中一些实例是开发人员难于寻觅的解决方案。
本书附带有配套DVD光盘，光盘中提供有书中全部实例的源代码，这些源代码都是经过作者精心调试通过的，保证能够在Windows XP、Windows 2003及Windows 7操作系统下编译和运行。
本书非常适合C#项目开发人员、C#初学者及编程爱好者使用，同时也可作为培训机构、大中专院校老师和学生的实践参考用书。
前言
前  言
特别说明：
《C#开发实战1200例》包括第I卷、第II卷共计1200个例子，本书是第II卷，包含600个例子。
程序开发是一项艰辛的工作，它不仅考验开发人员的智力，更考验开发人员的体力。纵观国内的软件企业，内部开发团队挑灯夜战，连续几个月加班加点工作是常有的事情。笔者曾“有幸”参加过十几个项目的开发工作，对编程有深刻的体会。编程是一项复杂的创造性工作，它需要开发人员掌握各方面的知识和积累丰富的开发经验。项目开发中的一个问题可能会占用团队几天甚至十几天的时间，但是如果开发人员遇到过类似的问题，也许几分钟就可以解决。这就是编程经验的重要性，也是许多软件企业用人时选择有项目开发经验者的主要原因。
本书笔者精选了项目开发中的600个实例，涵盖了鼠标与键盘控制、Windows系统开发、数据库及LINQ开发、水晶报表与打印、注册表操作、软件安全控制等方面的内容，每一个知识点都提供了丰富的、具有很强实用性的实例，以帮助开发人员快速解决疑难问题。
本书内容
本书分为6篇21章，共计600个实例。书中所选实例均来源于一线开发人员的实际项目开发，囊括了开发中经常使用和需要解决的热点、难点问题，参考本书，读者可以快速解决开发中的难题，提高编程效率。本书亮点内容导航如下图所示。
为了方便读者学习和使用本书，书中在讲解实例时采用统一的编排样式，每个实例由“实例说明”、“关键技术”、“设计过程”和“秘笈心法”4部分构成，如下图所示。
其中，“实例说明”部分采用图文结合的方式介绍实例的功能和运行效果；“关键技术”部分介绍了实例使用的重点、难点技术；“设计过程”部分讲解了实例的详细开发过程；“秘笈心法”部分给出了与实例相关的技巧和经验总结。
本书特色 
* 实例丰富，经验超值
本书精选了600个实例和600条经验技巧，涵盖了编程中多个方面的各种应用。用户开发中所需的技术、技巧、解决方案几乎都可以找到。
* 特点突出，功能完善，实用性强
书中所选实例均是项目开发中经常需要使用或实现的技术，有许多实例是开发人员梦寐以求的。
* 视频录像，全面介绍实例开发全过程
在每一章实例中作者选择重点和难点实例进行全程视频讲解，以帮助读者理解这些实例的开发过程。
* 赠送所有实例源码
书中所有实例均提供有源代码，用户在开发中可以快速借鉴或应用。
* 段落工整、简洁，图文结合，更容易学习
* 编码规范，注释详尽
为了提高用户的实际开发能力，书中代码都是经过严格审查的，可以与商业源码相媲美，并且为了方便用户阅读代码，几乎所有代码都提供有详细注释。
超值DVD光盘
为了帮助读者学习和使用书中的实例，本书附赠有DVD光盘，其中不仅提供了书中所有实例项目的源代码、素材，还提供了关键实例的开发视频讲解。光盘目录如下图所示。
本书约定
* 实例使用方法
用户在学习本书的过程中，可以从光盘中复制实例，去掉实例的只读属性。有些实例需要使用相应的数据库或第三方资源，这些实例在使用前需要进行相应配置，详细使用方式可参考本书光盘使用说明书。此外，如果用户直接将本书实例用于商业用途，由此产生的不良后果由用户自己承担。
* 实例及录像位置
书中实例在光盘中的存储格式为“MR\章号\实例序号”。例如，“MR\04\090”表示实例090，位于第4章。
书中关键实例在光盘中提供了开发录像，录像的存储格式与实例的存储格式是相同的。例如，查看实例090的开发录像，可以在光盘中“MR\04\090”路径下找到，录像名称与实例名称相同，格式为EXE格式。
* 录像使用说明
本书赠送的实例录像采用EXE文件格式，无须使用播放器，双击就可以直接播放。在主目录中，目录前有录像图标的实例，表示在光盘中存在视频录像。
* 部分实例只给出关键代码
由于篇幅限制，书中有些实例只给出了关键代码，完整代码可参考光盘实例程序。
读者人群
本书非常适合以下人员阅读：
* 从事C#编程行业的开发人员
* 有一定语言基础，想进一步提高技能的人员
* 大中专院校的老师和学生
* 即将走上工作岗位的大学毕业生
* 相关培训机构的老师和学员
* C#编程爱好者
本书作者
本书由明日科技组织编写，参加编写的程序员有王小科、王军、赵会东、董大永、尹强、李继业、张磊、赛奎春、高春艳、宋坤、刘锐宁、梁水、李伟明、刘彬彬、安剑、孙秀梅、巩建华、房大伟、吕双、刘云峰、王国辉、李钟尉、张振坤、陈丹丹、卢翰、白伟明、潘凯华、刘欣、李慧、梁晓岚、杨丽、顾丽丽、刘龄龄、王乐乐、陈英、李贺、朱晓、杨明、肖鑫、李鑫等。由于笔者水平有限，疏漏和不足之处在所难免，恳请广大读者朋友批评指正。
特别提醒：
亲爱的读者朋友，由于近期纸张价格和印制成本大幅上涨，为不增加读者朋友的负担，又不减少书的内容，本书的最后几章内容不得不放在配书光盘中（参见目录），由此给您带来了不便，在此深表歉意。
编  者
图书目录
第1篇  鼠标与键盘控制篇
第1章  鼠标操作控制 2
1.1  获取鼠标信息 3
实例001  获取鼠标双击时间间隔 3
实例002  获取光标闪烁的频率 4
实例003  获取鼠标键数 4
实例004  显示鼠标的等待光标 5
实例005  获得鼠标在窗体上的位置 6
实例006  记录鼠标行为 7
?实例007  通过截取系统消息判断鼠标的单击键 8
1.2  鼠标基本设置 10
实例008  定义鼠标指针形状 10
实例009  自定义鼠标的图片 11
实例010  自定义动画鼠标 12
实例011  交换鼠标左右键功能 14
实例012  限制鼠标在某一区域工作 15
实例013  屏蔽鼠标按键 16
?实例014  鼠标设置器 21
1.3  鼠标操作在实际中的应用 24
实例015  隐藏和显示鼠标 24
实例016  鼠标双击窗体时模拟键盘Tab键操作 25
实例017  使用鼠标拖放复制文本 26
实例018  利用鼠标绘图 27
实例019  模拟鼠标操作 28
?实例020  实现鼠标穿透窗体 30
第2章  键盘操作控制 32
2.1  获取键盘信息 33
实例021  获取组合键 33
实例022  获取功能键 34
实例023  判断NumLock键和CapsLock键
是否锁定 34
实例024  将回车键转换为Tab键 36
2.2  键盘热键的设置 37
实例025  屏蔽Alt+F4组合键关闭窗体 37
实例026  实现按下Esc键关闭窗体 38
实例027  屏蔽系统的Ctrl+C/X/V组合键 39
实例028  避免按回车键产生“嘀”声 40
?实例029  设置/屏蔽系统热键 41
2.3  键盘操作在实际中的应用 48
实例030  打开和关闭输入法编辑器 48
?实例031  使用键盘控制窗体的移动 49
?实例032  虚拟键盘操作 51
实例033  多功能键盘 60
第2篇  Windows系统开发篇
第3章  获取系统相关信息 66
3.1  获取计算机系统信息 67
实例034  获取系统时间 67
实例035  获取系统目录 68
实例036  获取计算机名称 68
实例037  获取当前程序运行目录 69
实例038  获得操作系统版本号 70
实例039  获取系统启动后经过的时间 71
?实例040  获取任务栏尺寸 72
实例041  改变系统提示信息 73
实例042  获取系统环境变量 74
3.2  获取计算机硬件信息 76
实例043  获取计算机内存信息 76
实例044  获取CPU相关信息 78
实例045  获取主板相关信息 79
实例046  获得硬盘序列号 80
实例047  获取所有逻辑分区 81
实例048  获取磁盘空间 82
?实例049  获得磁盘的文件系统类型 83
实例050  判断驱动器类型并获取其属性 84
实例051  获取显示设备的名称及PNPDeviceID 86
实例052  获取声音设备的名称及PNPDeviceID 87
实例053  获取屏幕的分辨率 88
实例054  获取系统已经安装的打印机信息 89
3.3  获取系统网络信息 90
实例055  得到本地机器的IP地址 90
实例056  检测计算机是否存在网络连接 92
实例057  判断计算机的联机状态 92
3.4  获取特殊文件夹路径 94
?实例058  获取系统特殊文件夹路径 94
实例059  得到本地运行的EXE的路径 96
实例060  获取映射驱动器路径 97
3.5  获取Windows当前用户信息 97
实例061  获取当前用户 97
实例062  判断当前用户是哪种用户 98
3.6  获取Windows日志信息 100
实例063  获取系统日志信息 100
实例064  获取安全日志信息 102
实例065  获取应用程序日志信息 103
实例066  创建并写入自定义日志信息 104
实例067  向系统日志写入自定义数据 105
实例068  向应用程序日志写入自定义信息 106
第4章  系统控制应用 107
4.1  启动相关 108
实例069  进入Windows前发出警告 108
实例070  将计算机设置为休眠状态 109
实例071  禁止用户关闭计算机 110
实例072  实现注销、关闭和重启计算机 111
实例073  定时关闭计算机 114
实例074  远程关闭与重启计算机 117
4.2  磁盘相关设置 120
实例075  取消磁盘共享 120
实例076  检测磁盘是否准备好 121
?实例077  图表显示磁盘容量 122
实例078  修改磁盘格式 124
实例079  格式化磁盘 125
4.3  系统设置 126
实例080  禁止使用Windows任务管理器 126
实例081  为文件新增右键菜单项 127
实例082  修改计算机的默认打印机 128
实例083  通过注册表设置桌面背景 129
实例084  利用API设置桌面背景 130
实例085  音乐风景桌面 132
实例086  设置系统任务栏时间 135
实例087  设置屏幕分辨率 137
实例088  修改计算机名称 138
实例089  显示器控制 139
?实例090  屏幕放大镜 141
4.4  系统隐藏 143
实例091  隐藏、显示任务栏 143
实例092  隐藏、显示开始按钮 145
实例093  使桌面图标文字透明 146
实例094  检索系统中正在运行的任务 147
实例095  隐藏、显示桌面图标 148
4.5  系统控制 150
实例096  切换输入法 150
实例097  全角半角转换 151
实例098  制作系统挂机锁 154
实例099  开机启动项管理 158
实例100  启动Windows系统服务 159
实例101  执行命令行命令 161
4.6  系统监控 162
实例102  检测系统启动模式 162
实例103  监视剪贴板的内容 163
实例104  内存使用状态监控 164
实例105  键盘钩子屏蔽热键 165
?实例106  CPU使用率 167
第5章  程序控制应用 170
5.1  程序控制 171
实例107  打开控制面板中的程序 171
?实例108  动态系统托盘图标 172
实例109  控制程序不出现在任务栏上 174
实例110  启动屏幕保护 175
实例111  使用回车键控制鼠标焦点 176
实例112  在TextBox控件中禁用鼠标右键 177
实例113  制作屏幕截图程序 178
实例114  复制程序本身 180
实例115  分段显示电话号码颜色 181
5.2  程序运行 182
实例116  使用互斥量禁止程序运行多次 182
实例117  使用进程名禁止程序运行多次 183
实例118  清空回收站 185
5.3  计算机控制 186
实例119  设置系统仅能运行的程序 186
?实例120  获取本地计算机上所有的进程 187
实例121  获取远程计算机上所有的进程 189
实例122  调用外部的EXE文件 190
实例123  关闭外部已开启的程序 191
?实例124  进程管理器 192
实例125  实现行业软件系统注销功能 195
实例126  创建应用程序快捷方式 195
实例127  使PC喇叭发音 197
第3篇  数据库及LINQ开发篇
第6章  SQL查询相关技术 200
6.1  SELECT子句 201
实例128  查询特定列数据 201
实例129  使用列别名 202
实例130  在列上加入计算 204
实例131  使用函数设置条件 205
6.2  查询常量 206
实例132  查询数字 206
实例133  查询字符串 207
实例134  查询日期数据 208
实例135  查询逻辑型数据 210
实例136  查询空（‘’或NULL）数据 211
6.3  查询变量 212
实例137  利用变量查询字符串数据 212
实例138  利用变量查询数值型数据 214
实例139  利用变量查询日期型数据 215
6.4  模糊查询 217
实例140  利用“_”通配符进行查询 217
实例141  利用“%”通配符进行查询 218
实例142  利用“[]”通配符进行查询 219
实例143  利用“[^]”通配符进行查询 221
实例144  复杂的模糊查询 222
6.5  TOP和PERCENT限制查询结果 224
实例145  查询前10名数据 224
实例146  取出数据统计结果的后10名数据 225
?实例147  查询第10到第20名的数据 226
实例148  查询销售量占前50%的图书信息 228
实例149  查询库存数量占后20%的图书信息 229
6.6  数值查询 231
实例150  判断是否为数值 231
实例151  在查询时对数值进行取整 232
实例152  将查询到的数值四舍五入 233
实例153  使用三角函数计算数值 234
实例154  求数值的绝对值 235
实例155  根据生成的随机数查询记录 236
实例156  根据查询数值的符号显示具体文本 238
6.7  字符串查询 239
实例157  实现字符串的大小写转换 239
实例158  返回字符在字符串中出现的次数 240
实例159  返回字符串中的子串 241
实例160  删除字符串中的子串 243
实例161  查找并替换字符串 244
实例162  比较两个字符串 246
6.8  周期、日期查询 248
实例163  判断是否为日期 248
实例164  查询指定日期的数据 249
?实例165  查询指定时间段的数据 250
实例166  按年、月或日查询数据 251
实例167  返回当前日期时间及其对应的星期 253
实例168  查询指定时间间隔的数据 254
6.9  比较、逻辑、重复查询 255
实例169  利用运算符查询指定条件的数据 255
实例170  NOT与谓词进行组合条件的查询 257
实例171  查询时不显示重复记录 258
实例172  列出数据中的重复记录和记录条数 259
6.10  在查询中使用OR和AND运算符 260
实例173  利用OR运算符进行查询 260
实例174  利用AND运算符进行查询 261
实例175  同时利用OR、AND运算符进行查询 262
6.11  排序、分组统计 263
实例176  数据分组统计（单列） 263
实例177  在分组查询中使用ALL关键字 265
实例178  在分组查询中使用CUBE运算符 266
实例179  在分组查询中使用ROLLUP 267
实例180  对数据进行降序查询 268
实例181  对数据进行多条件排序 269
实例182  对统计结果进行排序 270
实例183  按姓氏笔画排序 272
?实例184  按姓氏拼音排序 273
实例185  按仓库分组统计图书库存（多列） 274
实例186  多表分组统计 275
实例187  使用COMPUTE 276
实例188  使用COMPUTE BY 278
6.12  聚合函数 279
实例189  利用聚合函数SUM对销售额进行汇总 279
实例190  利用聚合函数AVG求某班学生的
平均年龄 280
实例191  利用聚合函数MIN求销售额、利润
最少的商品 281
实例192  利用聚合函数MAX求月销售额
完成最多的员工 283
实例193  利用聚合函数COUNT求日销售额
大于某值的商品数 284
?实例194  利用聚合函数FIRST或LAST求数据表
中第一条或最后一条记录 286
实例195  利用聚合函数显示数据库中重复记录的
数量 287
实例196  查询大于平均值的所有数据 288
实例197  获取无重复或者不为空的记录数 290
实例198  随机查询求和 291
实例199  统计某个值出现的次数 292
6.13  多表查询（连接查询） 293
实例200  利用FROM子句进行多表查询 293
实例201  使用表别名 295
实例202  合并多个结果集 296
实例203  笛卡儿乘积查询 297
6.14  嵌套查询 298
实例204  简单嵌套查询 298
实例205  复杂嵌套查询 299
实例206  嵌套查询在查询统计中的应用 301
6.15  子查询 302
实例207  用子查询做派生的表 302
实例208  用子查询作表达式 304
实例209  使用ALL谓词引入子查询 305
实例210  使用ANY/SOME谓词引入子查询 307
实例211  使用EXISTS运算符引入子查询 308
实例212  在HAVING子句中使用子查询
过滤数据 310
实例213  在UPDATE语句中应用子查询 311
实例214  使用子查询删除数据 312
6.16  组合语句 314
实例215  使用组合查询 314
实例216  多表组合查询 316
实例217  对组合查询后的结果进行排序 317
实例218  获取组合查询中两个结果集的交集 319
实例219  获取组合查询中两个结果集的差集 320
6.17  内连接查询 321
实例220  简单内连接查询 321
实例221  复杂内连接查询 322
实例222  使用INNER JOIN实现自身连接 324
实例223  使用INNER JOIN实现等值连接 325
实例224  使用INNER JOIN实现不等连接 326
实例225  使用内连接选择一个表与另一个表中
行相关的所有行 327
6.18  外连接查询 329
实例226  LEFT OUTER JOIN查询 329
实例227  RIGHT OUTER JOIN查询 330
实例228  使用外连接进行多表联合查询 331
6.19  利用IN进行查询 333
实例229  用IN查询表中的记录信息 333
实例230  使用IN引入子查询限定查询范围 334
实例231  使用NOT IN运算符引入子查询 335
6.20  交叉表查询 336
实例232  利用Transform分析数据（Access） 336
实例233  利用Transform动态分析数据
（Access） 338
实例234  静态交叉表（SQL Server 2005） 340
?实例235  动态交叉表（SQL Server 2005） 342
6.21  函数查询 343
实例236  在查询语句中使用格式化函数 343
实例237  在查询语句中使用字符串函数 344
实例238  在查询中使用日期函数 346
6.22  索引查询 347
实例239  使用UNIQUE关键字创建唯一索引 347
实例240  使用CLUSTERED关键字创建聚簇
索引 348
实例241  使用索引视图查询数据 350
实例242  删除索引 352
6.23  应用存储过程 353
实例243  使用存储过程查询多表中的数据 353
实例244  使用存储过程向表中添加数据 355
实例245  使用存储过程删除表中的数据 358
6.24  HAVING语句应用 361
实例246  利用HAVING子句过滤分组数据 361
实例247  HAVING子句应用在多表查询中 362
第7章  SQL高级应用 364
7.1  SQL中的流程控制语句 365
实例248  使用BEGIN…END语句控制批处理 365
实例249  使用IF语句指定执行条件 366
实例250  使用IF EXISTS语句检测数据是否
存在 367
实例251  使用WHILE语句执行循环语句块 368
实例252  使用CASE语句执行分支判断 369
实例253  使用RETURN语句执行返回 371
实例254  使用WAITOF语句延期执行语句 372
实例255  使用GOTO语句实现跳转 373
实例256  使用TRY CATCH语句进行异常处理 375
实例257  使用PRINT语句进行打印 376
实例258  使用RAISERROR语句返回错误信息 377
实例259  使用SET语句进行选项设置 378
7.2  视图的应用 379
实例260  在C#中应用视图 379
实例261  获取数据库中的全部用户视图 380
?实例262  通过视图修改数据 380
实例263  通过视图过滤数据 382
实例264  使用视图格式化检索到的数据 383
实例265  对视图定义文本进行加密 384
实例266  使用视图生成计算列 385
7.3  存储过程的应用 387
实例267  C#中应用存储过程 387
?实例268  应用存储过程添加数据 388
实例269  应用存储过程修改数据 390
实例270  应用存储过程删除数据 391
实例271  获取数据库中全部的存储过程 392
实例272  在存储过程中使用return定义返回值 394
实例273  执行带回传参数的存储过程 395
实例274  重命名存储过程 396
实例275  在存储过程中使用事务 397
实例276  加密存储过程 399
实例277  查看存储过程的相关信息 400
7.4  触发器的应用 401
实例278  获取数据库中的触发器 401
实例279  使用Insert触发器向薪水表中添加
薪水信息 402
实例280  Update触发器在系统日志中的应用 404
实例281  使用Delete触发器删除员工薪水信息 405
实例282  触发器的嵌套使用 406
使用283  使用递归触发器实现每次删除一条
记录功能 408
实例284  使用触发器删除相关联的两表间的数据 409
7.5  事务的使用 411
实例285  使用事务同时提交多个数据表 411
实例286  使用隐式事务实现多表提交数据 413
?实例287  使用事务批量删除生产单信息 414
实例288  在事务中的表级锁定 417
实例289  实现事务的并发控制 420
实例290  创建分布式事务 422
7.6  游标的应用 423
实例291  创建一个标准、只读和更新游标 423
使用292  利用sp_cursor_list查看游标属性 425
实例293  利用sp_describe_cursor查看游标
全局特性 426
实例294  利用游标在商品销售表中返回指定行
数据 428
实例295  使用ORDER BY子句改变游标中
行的顺序 429
实例296  使用游标定位删除指定员工信息 431
实例297  使用参数化游标更改员工部门信息 432
实例298  使用嵌套游标查询两个员工表间的
员工信息 433
7.7  SQL Server与XML互操作 435
实例299  使用FOR XML RAW参数读取所有
图书信息 435
实例300  将存储在XML中的图书信息插入
数据表中 436
实例301  将图书销售表中的字段作为节点元素
输出 437
实例302  查询存储图书信息的XML节点 439
实例303  获取XML节点或者元素值 440
实例304  编辑存储图书信息的XML节点 441
实例305  将XML节点转换为相应的数据表
字段 444
第8章  ADO。NET开发技术 446
8.1  连接Access数据库 447
实例306  连接Access数据库 447
实例307  连接加密的Access数据库 448
实例308  自动识别Access 2000数据库路径 449
实例309  连接网络上共享的Access 2000数据库 450
实例310  将Access数据库导入Excel文件中 452
8.2  连接SQL Server数据库 453
实例311  使用ODBC DSN连接SQL Server
数据库 453
实例312  使用ODBC非DSN连接SQL Server
数据库 455
实例313  使用OLE DB连接SQL Server数据库 457
实例314  建立SQL Server数据库连接 458
8.3  连接其他数据库 459
实例315  连接Excel 459
实例316  连接文本文件 460
8.4  数据库结构的读取与修改 462
?实例317  读取SQL Server数据库结构 462
实例318  修改SQL Server数据库结构 464
8.5  数据录入 466
实例319  利用数据绑定控件录入数据 466
实例320  使用ADO。NET对象录入数据 467
实例321  利用SQL语句录入数据 469
实例322  利用存储过程录入数据 470
?实例323  向SQL Server数据库中批量写入
海量数据 472
8.6  图片存取技术 473
实例324  使用存取文件名的方法存取图片 473
实例325  使用二进制存取用户头像 475
8.7  数据修改 476
实例326  利用数据绑定控件修改数据 476
实例327  利用数据对象修改数据 478
实例328  利用SQL语句修改数据 479
实例329  利用存储过程修改数据 480
实例330  使用断开式连接批量更新数据库中
数据 482
8.8  数据保存前判断 483
实例331  判断是否重复输入数据 483
实例332  判断输入数据是否符合要求 485
8.9  数据删除 487
实例333  删除表格中指定的记录 487
实例334  利用SQL语句删除数据 488
实例335  利用SQL语句清空数据表 489
8.10  数据记录 490
?实例336  分页显示信息 490
实例337  移动记录 491
实例338  综合查询职工详细信息 492
8.11  数据维护 495
实例339  在C#中创建数据库 495
实例340  在C#中删除数据库 497
实例341  在C#中创建数据表 498
实例342  在C#中删除数据表 499
实例343  在C#中分离SQL Server数据库 500
实例344  在C#中附加SQL Server数据库 502
实例345  在C#中附加单文件SQL Server
数据库 503
8.12  数据备份恢复 504
实例346  备份SQL Server数据库 504
实例347  还原SQL Server数据库 506
8.13  其他数据库开发技术 509
实例348  判断计算机中是否安装了SQL软件 509
实例349  开启SQL Server数据库 510
实例350  断开SQL Server数据库与其他应用
程序的连接 511
实例351  利用SQL语句执行外围命令 512
实例352  对软件进行初始化 513
实例353  带图像列表的系统登录程序 515
第9章  LINQ to Objects——查询内存中
对象 517
9.1  LINQ基础应用 518
实例354  使用隐式类型局部变量实现字母的
大小写转换 518
实例355  使用自动实现属性记录用户信息 519
实例356  使用对象初始化器创建对象并为其
属性赋值 520
实例357  使用Lambda表达式查找指定字符串 521
实例358  使用扩展方法显示员工信息 522
?实例359  在线程中使用匿名方法防止窗体
“假死” 524
实例360  使用Predicate委托查找年龄大于30
的员工 525
实例361  使用Action委托实现遍历所有员工
信息 526
实例362  使用Func委托实现计算所有员工
工资总和 527
9.2  限定符操作 528
实例363  检查序列中所有元素是否都满足
指定条件 528
实例364  检查序列中是否包含指定元素 529
9.3  元素操作 531
实例365  获取指定位置的元素 531
实例366  使用LINQ生成随机序列 532
实例367  使用LINQ初始化数组 533
实例368  使用LINQ在一个循环中遍历多个
数组 534
实例369  筛选指定类型的元素 535
实例370  使用LINQ实现销售单查询 536
?实例371  获取某类商品最后一次销售单价 538
9.4  使用LINQ操作字符串 539
实例372  使用LINQ生成字符串 539
实例373  查找字符串中包含的大写字母 540
实例374  查找字符串中包含的数字字符 541
实例375  过滤文章中包含指定单词的句子 542
实例376  统计每个单词在文章中出现的次数 543
实例377  查找文章中以ing结尾的单词 544
实例378  将字符串数组按元素长度分组 547
9.5  类型转换操作 548
实例379  将数据源转换为IEnumerable<T>类型 548
实例380  将数据源转换为IQueryable<T>类型 549
实例381  转换为泛型列表 550
实例382  转换为字典类型 551
实例383  转换为一对多字典 552
实例384  使用LINQ转换序列或集合 554
9.6  使用LINQ操作集合 556
实例385  操作泛型列表List<T> 556
实例386  操作泛型排序列表SortedList
<TKey,TValue> 557
实例387  操作泛型双向链表LinkedList<T> 558
实例388  操作泛型队列Queue<T> 559
实例389  操作泛型堆栈Stack<T> 561
实例390  操作泛型哈希集HashSet<T> 562
实例391  操作泛型字典Dictionary
<TKey,TValue> 563
实例392  操作泛型通用集合Collection<T> 565
实例393  操作泛型绑定列表BindingList<T> 566
9.7  使用LINQ技术操作对象 567
实例394  使用LINQ技术对对象进行筛选操作 567
实例395  使用LINQ技术对对象进行投影操作 568
实例396  使用LINQ技术对对象进行排序操作 570
实例397  使用LINQ技术对对象进行聚合操作 572
实例398  使用LINQ技术对对象进行集合操作 574
实例399  使用LINQ技术对对象进行元素操作 576
实例400  使用LINQ技术对对象进行联接操作 577
?实例401  使用LINQ技术获取文件详细信息 579
第10章  LINQ to SQL——查询关系
数据库 581
10.1  数据查询 582
实例402  查询单表数据 582
实例403  获取与Not Exists等价的语句 585
实例404  按多个字段降序排序数据表 586
?实例405  关联查询多表数据 587
实例406  按照多个条件分组 588
实例407  实现LINQ动态查询的方法 589
10.2  聚合操作 591
实例408  Count操作——统计每种商品的
销售次数 591
实例409  Sum操作——统计每种商品的
销售总额 592
实例410  Max操作——统计每种商品的
最高销售价 593
实例411  Min操作——统计每种商品的
最低销售价 594
实例412  Average操作——统计每种商品的
销售均价 595
实例413  Aggregate操作——统计月销售额 596
10.3  集合操作 597
实例414  Distinct操作——去除重复的
返货记录 597
实例415  差集操作——获取从未返过货的
商品列表 598
实例416  交集操作——获取有过返货记录的
商品列表 599
实例417  并集操作——查询每种商品的
销售总数 600
10.4  DataContext类的方法 601
实例418  检测数据库是否存在 601
实例419  直接执行SQL查询 602
10.5  数据操作 603
实例420  生成LINQ to SQL对象模型 603
实例421  获取数据库连接信息 606
实例422  使用LINQ技术查询SQL数据库中
的数据 608
实例423  使用LINQ技术向SQL数据库中
添加数据 610
?实例424  使用LINQ技术在SQL数据库中
修改数据 611
实例425  使用LINQ技术在SQL数据库中
删除数据 612
实例426  使用存储过程查询单表数据 613
实例427  使用SQL Server中的函数过滤数据 615
实例428  根据外键获取主表信息 616
实例429  使用LINQ为列表控件提供数据 617
实例430  使用LINQ技术防止SQL注入式攻击 618
?实例431  使用LINQ技术实现数据分页 620
第11章  LINQ to DataSet——查询
ADO。NET数据集 623
11.1  数据查询 624
实例432  使用LINQ技术查询DataSet中的
单个表 624
实例433  使用LINQ技术对DataSet进行
投影操作 625
?实例434  使用LINQ技术查询DataSet中的
多个表 626
实例435  使用LINQ技术对DataSet进行
筛选操作 627
实例436  使用LINQ技术对DataSet进行
排序操作 628
11.2  数据分区操作 629
实例437  从头开始提取指定数量的记录 629
?实例438  从头开始提取满足指定条件的记录 631
实例439  跳过序列中指定数量的记录 632
实例440  跳过满足指定条件的记录 633
11.3  类型转换操作 634
实例441  将查询结果转换为DataTable 634
实例442  将查询结果转换为DataView 635
11.4  其他操作 636
实例443  聚合操作——按客户分组汇总
销售金额 636
实例444  使用LINQ技术对DataSet进行
元素操作 637
实例445  使用LINQ技术查询前5名数据 639
?实例446  使用LINQ技术对数据进行排序 640
实例447  使用LINQ技术统计员工的工资总额 641
第12章  LINQ to XML——操作XML文件 643
12.1  XML文件基本操作 644
?实例448  使用LINQ技术创建XML文件 644
实例449  使用LINQ技术对XML文件进行读取 645
12.2  查询操作 647
实例450  查找根元素 647
实例451  查找指定名称的元素 648
实例452  查找指定属性的元素 649
实例453  遍历指定节点下的所有对象 650
实例454  只返回指定节点下的注释 652
实例455  访问指定节点的父节点 653
实例456  返回节点集合中每个节点的所有
上级节点 654
实例457  返回节点集合中每个节点的所有
下级节点 656
实例458  返回元素集合中每个元素的所有
属性 657
12.3  元素操作 659
?实例459  使用LINQ技术向XML文件中
添加数据 659
实例460  使用LINQ技术修改XML文件中
的数据 660
实例461  替换指定节点下的所有元素 661
实例462  使用LINQ技术删除XML文件中的
数据 662
实例463  合计XML元素值 664
12.4  属性操作 665
实例464  添加属性到XML文件 665
实例465  修改元素的属性值 666
实例466  删除一个元素的所有属性 667
实例467  将XML文件中的属性转换为元素 669
12.5  其他操作 670
实例468  添加注释到XML文件 670
实例469  添加声明到XML文件 671
实例470  添加文档类型到XML文件 672
实例471  使用LINQ to XML转换XML 673
?实例472  读取XML文件并更新到数据库 676
第4篇  水晶报表与打印篇
第13章  Windows打印组件的使用 680
13.1  打印基础 681
实例473  打印窗体中的数据 681
实例474  图像打印 683
?实例475  自定义横向或纵向打印 684
实例476  自定义打印页码范围 686
实例477  分页打印 688
13.2  常用报表的打印 690
实例478  打印条形码 690
实例479  打印学生个人简历 691
实例480  打印一个空学生证 693
实例481  打印商品入库单据 695
实例482  批量打印学生证书 697
第14章  水晶报表设计技术 701
14.1  水晶报表基本设置 702
实例483  快速创建水晶报表 702
实例484  设计带图片的水晶报表 704
实例485  使图片成为整个报表的背景 706
实例486  设置水晶报表中节的背景图片 707
实例487  设置水晶报表中节的背景色 709
?实例488  在水晶报表中添加图表 710
实例489  设置水晶报表的页面 713
实例490  在水晶报表中添加节 714
实例491  在水晶报表中移动节的顺序 715
实例492  在水晶报表中合并节 716
实例493  在水晶报表中删除节 717
实例494  在水晶报表中显示与隐藏节 718
实例495  设置多列样式水晶报表 719
实例496  设置水晶报表中节的高度 721
实例497  设置水晶报表的摘要信息 722
实例498  设置水晶报表的打印日期与时间 723
14.2  水晶报表的格式化 724
实例499  在水晶报表中使用文本对象 724
?实例500  使用公式字段 726
实例501  在水晶报表中使用线 728
实例502  在水晶报表中使用方框 729
14.3  对水晶报表进行排序与分组 730
实例503  排序水晶报表中的数据 730
实例504  对水晶报表中的数据进行分组 731
实例505  在水晶报表中筛选数据 732
?实例506  设计分组统计报表 734
实例507  对分组报表中的页码进行设置 735
第15章  水晶报表开发应用 737
15.1  水晶报表常用应用 738
实例508  利用报表专家设计并显示学生
基本信息 738
实例509  动态绑定水晶报表 742
实例510  在水晶报表中使用Access数据库 743
实例511  在水晶报表中使用SQL Server数据库 745
实例512  高数成绩大于90分使用红色字体标记 746
?实例513  订货总金额超过10万元显示“恭喜
获奖”文字 748
实例514  薪资大于或等于1万元使用蓝色
字体标记 750
实例515  筛选薪资大于2000元的男员工 752
实例516  按类别分组统计图书库存 754
实例517  按成绩总分降序排序 755
实例518  部门销售量占公司总销售量的
业绩百分比 757
实例519  在水晶报表中使用交叉表 758
15.2  子报表的使用 760
实例520  插入子报表 760
实例521  编辑与重新导入子报表 761
实例522  根据需要显示子报表 763
实例523  删除子报表 765
15.3  使用水晶报表设计常用报表 766
实例524  设计信封标签报表 766
?实例525  设计商品入库报表 767
实例526  设计学生个人简历报表 768
实例527  设计汇款单式报表 769
第5篇  注册表操作篇
第16章  注册表基本操作 772
16.1  注册表基本操作 773
实例528  获取注册表信息 773
?实例529  向注册表中写入信息 774
实例530  修改注册表信息 776
实例531  搜索注册表内容 777
实例532  删除注册表信息 778
实例533  备份注册表 780
实例534  还原注册表 781
实例535  禁止远程修改注册表 782
实例536  禁止运行注册表 783
16.2  注册表在实际中的应用 784
实例537  使用C#打开Windows注册表 784
实例538  建立数据文件与程序的关联 785
?实例539  使应用程序开机自动运行 786
实例540  在注册表中保存窗体的大小和位置 788
实例541  优化开关机速度 789
实例542  优化菜单显示速度 790
实例543  优化网上邻居显示速度 791
?实例544  获取本机安装的软件清单 792
第17章  系统个性化设置 793
17.1  开始菜单设置 794
实例545  启用和禁用“开始”菜单中的
“运行”功能 794
实例546  屏蔽和开启“开始”菜单中的
“关机”功能 795
实例547  在右键菜单中添加“用记事本
打开”项 796
17.2  个性桌面 797
?实例548  隐藏桌面快捷方式图标的小箭头 797
实例549  禁用和启用主题选项卡 798
实例550  禁用和启用外观选项卡 799
实例551  禁用和启用屏幕保护选项卡 800
?实例552  设置任务栏时间样式 801
实例553  删除“我的电脑”上下文菜单中的
“属性” 802
17.3  系统设置 803
实例554  将磁盘驱动器隐藏 803
实例555  禁止显示任务栏的右键菜单 804
实例556  禁止对任务栏位置进行改变 806
?实例557  禁止使用Windows任务管理器 807
实例558  禁止使用控制面板的添加删除程序 808
实例559  禁止使用命令提示符 809
实例560  关机时自动关闭停止响应的程序 810
第18章  IE浏览器设置 811
18.1  IE浏览器基本设置 812
实例561  隐藏桌面上的IE浏览器图标 812
实例562  禁止修改IE浏览器主页 814
?实例563  设置IE浏览器的默认主页 815
实例564  修改IE浏览器标题栏内容 816
实例565  设置IE地址栏的自动完成功能 817
18.2  IE浏览器高级应用 818
?实例566  向收藏夹中添加网址 818
实例567  清除IE地址栏中的历史网址 819
实例568  设置IE浏览器的默认下载路径 821
实例569  清空IE浏览器的缓存区 822
?实例570  使用WebBrowser控件制作IE
浏览器 823
特别提醒：
亲爱的读者朋友，由于近期纸张价格和印制成本大幅上涨，为不增加读者朋友的负担，又不减少书的内容，本书以下章节内容不得不放在配书光盘中，由此给您带来了不便，在此深表歉意。
第6篇  软件安全控制篇
第19章  加密与解密技术 828
（本章内容在配书光盘中）
19.1  数据的加密与解密 829
实例571  异或算法对数字进行加密与解密 829
?实例572  使用MD5算法加密数据 830
实例573  使用ROT13算法加密解密数据 831
实例574  使用恺撒密码算法加密密码 833
?实例575  对数据报进行加密保障通信安全 834
实例576  使用one-time pad算法加密数据 839
实例577  使用伪随机数加密技术加密用户
登录密码 840
实例578  以XML格式导入导出密钥 842
实例579  以参数格式导入导出密钥 844
19.2  文件的加密与解密 846
实例580  文本文件加密与解密 846
实例581  利用图片加密文件 849
实例582  对文件进行加密保护 851
?实例583  使用口令加密可执行文件 856
实例584  使用对称算法加密解密文件 860
第20章  数据库安全技术 863
（本章内容在配书光盘中）
20.1  连接加密的数据库 864
实例585  连接加密的Access数据库 864
实例586  连接加密的Excel文件 865
?实例587  访问带验证模式的SQL Server数据库 866
20.2  数据库安全在实际中的应用 868
实例588  编程修复Access数据库 868
实例589  Access数据库备份与恢复 869
?实例590  加密数据库中的数据 871
实例591  加密DataSet数据集 873
?实例592  防止SQL注入式攻击 875
第21章  软件安全控制 877
（本章内容在配书光盘中）
21.1  软件的注册 878
实例593  利用INI文件对软件进行注册 878
?实例594  利用注册表设计软件注册程序 880
实例595  利用网卡序列号设计软件注册程序 882
?实例596  根据CPU序列号和磁盘卷标制作
软件注册机 884
21.2  软件的加密 886
实例597  制作一个EXE文件加密器 886
?实例598  限制软件的使用次数 890
实例599  使用强名称标识软件 892
实例600  软件加壳常用工具及使用 893