社区
付加劲的课程社区_NO_1
C#上位机二合一系列【基础编程+项目实战】
帖子详情
9.9 C#联合SQLServer增加删除
上位机付工
2025-03-06 16:40:03
课时名称
课时知识点
9.9 C#联合SQLServer增加删除
本节主要介绍如何实现C#联合SQLServer增加删除
...全文
13
回复
打赏
收藏
9.9 C#联合SQLServer增加删除
课时名称课时知识点9.9 C#联合SQLServer增加删除本节主要介绍如何实现C#联合SQLServer增加删除
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
C#
连接数据库源码下载
《
C#
程序开发范例宝典》(09章)的源码 第9章 数据库技术 355 9.1 连接Access数据库 356 实例254 连接Access数据库 356 实例255 连接加密的Access数据库 357 实例256 自动识别Access 2000数据库路径 358 实例257 连接网络上共享的Access 2000数据库 360 9.2 连接SQL Server数据库 361 实例258 使用ODBC DSN连接SQL Server数据库 361 实例259 使用ODBC非DSN连接SQL Server数据库 364 实例260 使用OLE DB连接SQL Server数据库 365 实例261 建立SQL Server数据库连接 366 9.3 连接其他数据库 367 实例262 连接Excel 367 实例263 连接Oracle数据库 368 9.4 数据库结构的读取与修改 369 实例264 读取SQL Server数据库结构 369 实例265 修改SQL Server数据库结构 372 9.5 数据录入 374 实例266 利用数据绑定控件录入数据 374 实例267 使用ADO NET对象录入数据 376 实例268 利用SQL语句录入数据 379 实例269 利用存储过程录入数据 380 9.6 图片存取技术 383 实例270 使用存取文件名的方法存取图片 383 实例271 使用ADO NET对象向SQL Server数据库存入图片 384 9.7 数据修改 387 实例272 利用数据绑定控件修改数据 387 实例273 利用数据对象修改数据 390 实例274 利用SQL语句修改数据 391 实例275 利用存储过程修改数据 393 9.8 数据保存前判断 395 实例276 判断输入数据是否符合要求 395 实例277 通过存储过程实现自动编号 398
9.9
数据
删除
401 实例278
删除
表格中指定的记录 401 实例279 利用SQL语句
删除
数据 402 9.10 数据记录 403 实例280 分页显示信息 403 实例281 移动记录 404 9.11 数据维护 406 实例282 在
C#
中分离SQL Server数据库 406 实例283 在
C#
中附加SQL Server数据库 407 实例284 在
C#
中附加单文件SQL Server数据库 409 9.12 数据备份恢复 410 实例285 备份SQL Server数据库 410 实例286 还原SQL Server数据库 413 9.13 管理系统开发相关 415 实例287 开启SQL Server数据库 415 实例288 断开SQL Server数据库与其他应用程序的连接 417 实例289 带图像列表的系统登录程序 419 实例290 利用SQL语句执行外围命令 420 实例291 系统初始化 421
SQLServer
2008查询性能优化 2/2
书名:
SQLServer
2008查询性能优化 作者: 弗里奇(Grant Fritchey) 出版社: 人民邮电出版社 出版日期: 2010年8月1日 ISBN: 9787115230294 编辑推荐 《SQL Server 2008查询性能优化》为你提供了处理查询性能所需要的工具。建立、维护数据库和数据库服务器可能是个困难的工作。当服务器的运行越来越慢时,这个工作就变得更加困难。来自用户的愤怒的电话以及站在你办公桌周围的管理人员都使你很不快活。在开发代码的同时,如果你花费时间和精力来开发一个性能故障排错的方法。那么你就能避免这种情况——至少可以快速而有效地做出反应。《SQL Server 2008查询性能优化》指出的性能要点之一是数据库随着用户和数据的日益增多而进行扩展的必要性。你需要理解性能低下的起因。以及识别并修复它们的方法。《SQL Server 2008查询性能优化》将帮助你: 使用性能监视器、SQL Trace以及动态管理视图和函数建立性能基线 理解一般系统中发生瓶颈的地方。以及解决瓶颈的方法 识别常见性能问题以及对其快速处理的方法 实施修复甚至预防性能问题的T-SQL最佳实践 《SQL Server 2008查询性能优化》不是理论书籍,它的目的是帮助你避免数据库出现性能低下的状况,它还能帮助你保住你的工作。 内容提要 《SQL Server 2008查询性能优化》通过大量实例,详细介绍了SQL Server数据库系统优化的各种方法和技巧。内容涵盖了数据库应用系统中各种性能瓶颈的表现形式及其发生的根源和解决方法,从硬件瓶颈到查询、索引设计以及数据库管理等,贯穿了数据库系统知识的各个方面。最后以一个实际的工作负载将所有技巧联系起来,并且提供了“宝典”式的最佳实践列表。 《SQL Server 2008查询性能优化》适合于关心数据库应用系统性能的开发人员和数据库管理人员阅读。通过阅读《SQL Server 2008查询性能优化》,不仅可以学习到数据库性能管理的许多知识和技巧,还有助于养成良好的编程习惯,为实现高性能的数据库应用系统打下基础。 目录 第1章 SQL查询性能调整 1 1.1 性能调整过程 2 1.1.1 核心过程 2 1.1.2 迭代过程 4 1.2 性能vs.价格 7 1.2.1 性能目标 7 1.2.2 “足够好”的调整 7 1.3 性能基线 8 1.4 工作的重点 9 1.5 SQL Server性能杀手 10 1.5.1 低质量的索引 10 1.5.2 不精确的统计 11 1.5.3 过多的阻塞和死锁 11 1.5.4 不基于数据集的操作 11 1.5.5 低质量的查询设计 12 1.5.6 低质量的数据库设计 12 1.5.7 过多的碎片 12 1.5.8 不可重用的执行计划 13 1.5.9 低质量的执行计划 13 1.5.10 频繁重编译计划 13 1.5.11 游标的错误使用 13 1.5.12 错误配置数据库日志 14 1.5.13 过多使用或者错误配置tempdb 14 1.6 小结 14 第2章 系统性能分析 15 2.1 性能监视器工具 15 2.2 动态管理视图 17 2.3 硬件资源瓶颈 18 2.3.1 识别瓶颈 18 2.3.2 瓶颈解决方案 19 2.4 内存瓶颈分析 19 2.4.1 SQL Server内存管理 20 2.4.2 Available Bytes 23 2.4.3 Pages/sec和Page Faults/sec计数器 23 2.4.4 Buffer Cache Hit Ratio 24 2.4.5 Page Life Expectancy 24 2.4.6 Checkpoint Pages/sec 24 2.4.7 Lazy writes/sec 24 2.4.8 Memory Grants Pending 25 2.4.9 Target Server Memory(KB)和Total Server Memory(KB) 25 2.5 内存瓶颈解决方案 25 2.5.1 优化应用程序工作负载 26 2.5.2 为SQL Server分配更多内存 27 2.5.3
增加
系统内存 27 2.5.4 更换32位处理器为64位处理器 27 2.5.5 启用3GB进程空间 28 2.5.6 在32位SQL Server中使用4GB以上内存 28 2.6 磁盘瓶颈分析 29 2.6.1 磁盘计数器 30 2.6.2 % Disk Time 30 2.6.3 Current Disk Queue Length 31 2.6.4 Disk Transfers/sec 31 2.6.5 Disk Bytes/sec 32 2.6.6 Avg. Disk Sec/Read和Avg. Disk Sec/Write 32 2.7 磁盘瓶颈解决方案 32 2.7.1 优化应用程序工作负载 33 2.7.2 使用更快的磁盘驱动器 33 2.7.3 使用一个RAID阵列 33 2.7.4 使用SAN系统 35 2.7.5 恰当地对齐磁盘 35 2.7.6 使用电池后备的控制器缓存 36 2.7.7 添加系统内存 36 2.7.8 创建多个文件和文件组 36 2.7.9 将表和索引放在不同的磁盘上 39 2.7.10 将日志文件保存到独立的物理磁盘 39 2.7.11 表的分区 40 2.8 处理器瓶颈分析 40 2.8.1 % Processor Time 41 2.8.2 % Privileged Time 41 2.8.3 Processor Queue Length 42 2.8.4 Context Switches/sec 42 2.8.5 Batch Requests/sec 42 2.8.6 SQL Compilations/sec 42 2.8.7 SQL Recompilations/sec 43 2.9 处理器瓶颈解决方案 43 2.9.1 优化应用程序工作负载 43 2.9.2 消除过多的编译/重编译 43 2.9.3 使用更多或更快的处理器 44 2.9.4 使用大的二级(L2)/三级(L3)缓存 44 2.9.5 运行更高效的控制器/驱动程序 44 2.9.6 不运行不必要的软件 45 2.10 网络瓶颈分析 45 2.10.1 Bytes Total/sec 45 2.10.2 % Net Utilization 46 2.11 网络瓶颈解决方案 46 2.11.1 优化应用程序工作负载 46 2.11.2
增加
网络适配器 47 2.11.3 节制和避免中断 47 2.12 SQL Server总体性能 47 2.12.1 丢失索引 48 2.12.2 数据库阻塞 49 2.12.3 不可重用的执行计划 50 2.12.4 总体表现 50 2.13 创建一个基线 51 2.13.1 创建性能计数器的一个可重用列表 51 2.13.2 使用性能计数器列表创建一个计数器日志 54 2.13.3 最小化性能监视器开销 55 2.14 以基线为标准的系统状态分析 56 2.15 小结 57 第3章 SQL查询性能分析 58 3.1 SQL Profiler工具 58 3.1.1 Profiler跟踪 59 3.1.2 事件 60 3.1.3 数据列 62 3.1.4 过滤器 64 3.1.5 跟踪模板 65 3.1.6 跟踪数据 65 3.2 跟踪的自动化 66 3.2.1 使用GUI捕捉跟踪 66 3.2.2 使用存储过程捕捉跟踪 67 3.3 结合跟踪和性能监视器输出 68 3.4 SQL Profiler建议 69 3.4.1 限制事件和数据列 69 3.4.2 丢弃性能分析所用的启动事件 70 3.4.3 限制跟踪输出大小 70 3.4.4 避免在线数据列排序 71 3.4.5 远程运行Profiler 71 3.4.6 限制使用某些事件 71 3.5 没有Profiler情况下的查询性能度量 71 3.6 开销较大的查询 72 3.6.1 识别开销较大的查询 73 3.6.2 识别运行缓慢的查询 77 3.7 执行计划 78 3.7.1 分析查询执行计划 80 3.7.2 识别执行计划中开销较大的步骤 82 3.7.3 分析索引有效性 83 3.7.4 分析连接有效性 84 3.7.5 实际执行计划vs.估算执行计划 88 3.7.6 计划缓存 89 3.8 查询开销 90 3.8.1 客户统计 90 3.8.2 执行时间 91 3.8.3 STATISTICS IO 92 3.9 小结 94 第4章 索引分析 95 4.1 什么是索引 95 4.1.1 索引的好处 97 4.1.2 索引开销 98 4.2 索引设计建议 100 4.2.1 检查WHERE子句和连接条件列 100 4.2.2 使用窄索引 102 4.2.3 检查列的唯一性 103 4.2.4 检查列数据类型 106 4.2.5 考虑列顺序 107 4.2.6 考虑索引类型 109 4.3 聚簇索引 109 4.3.1 堆表 110 4.3.2 与非聚簇索引的关系 110 4.3.3 聚簇索引建议 112 4.4 非聚簇索引 117 4.4.1 非聚簇索引维护 117 4.4.2 定义书签查找 117 4.4.3 非聚簇索引建议 118 4.5 聚簇索引vs.非聚簇索引 118 4.5.1 聚簇索引相对于非聚簇索引的好处 119 4.5.2 非聚簇索引相对于聚簇索引的好处 120 4.6 高级索引技术 121 4.6.1 覆盖索引 122 4.6.2 索引交叉 124 4.6.3 索引连接 125 4.6.4 过滤索引 126 4.6.5 索引视图 128 4.6.6 索引压缩 132 4.7 特殊索引类型 134 4.7.1 全文索引 134 4.7.2 空间索引 135 4.7.3 XML 135 4.8 索引的附加特性 135 4.8.1 不同的列排序顺序 135 4.8.2 在计算列上的索引 136 4.8.3 BIT数据类型列上的索引 136 4.8.4 作为一个查询处理的CREATE INDEX语句 136 4.8.5 并行索引创建 136 4.8.6 在线索引创建 137 4.8.7 考虑数据库引擎调整顾问 137 4.9 小结 137 第5章 数据库引擎调整顾问 139 5.1 数据库引擎调整顾问机制 139 5.2 数据库引擎调整顾问实例 143 5.2.1 调整一个查询 143 5.2.2 调整一个跟踪工作负载 146 5.3 数据库引擎调整顾问的局限性 148 5.4 小结 149 第6章 书签查找分析 150 6.1 书签查找的目的 150 6.2 书签查找的缺点 152 6.3 分析书签查找的起因 153 6.4 解决书签查找 155 6.4.1 使用一个聚簇索引 155 6.4.2 使用一个覆盖索引 155 6.4.3 使用索引连接 158 6.5 小结 160 第7章 统计分析 161 7.1 统计在查询优化中的角色 161 7.2 索引列上的统计 162 7.2.1 更新统计的好处 162 7.2.2 过时统计的缺点 164 7.3 在非索引列上的统计 165 7.3.1 在非索引列上统计的好处 166 7.3.2 丢失非索引列上的统计的缺点 169 7.4 分析统计 172 7.4.1 密度 174 7.4.2 多列索引上的统计 174 7.4.3 过滤索引上的统计 175 7.5 统计维护 176 7.5.1 自动维护 177 7.5.2 人工维护 179 7.5.3 统计维护状态 181 7.6 为查询分析统计的有效性 182 7.6.1 解决丢失统计问题 182 7.6.2 解决过时统计问题 184 7.7 建议 186 7.7.1 统计的向后兼容性 186 7.7.2 自动创建统计 186 7.7.3 自动更新统计 187 7.7.4 自动异步更新统计 189 7.7.5 收集统计的采样数量 189 7.8 小结 190 第8章 碎片分析 191 8.1 碎片的成因 191 8.1.1 UPDATE语句引起的页面分割 193 8.1.2 INSERT语句引起的页面分割 196 8.2 碎片开销 197 8.3 分析碎片数量 200 8.4 碎片解决方案 204 8.4.1 卸载并重建索引 204 8.4.2 使用DROP_EXISTING子句重建索引 205 8.4.3 执行ALTER INDEX REBUILD语句 205 8.4.4 执行ALTER INDEX REORGANIZE语句 207 8.5 填充因子的重要性 209 8.6 自动维护 212 8.7 小结 217 第9章 执行计划缓冲分析 218 9.1 执行计划生成 218 9.1.1 解析器 219 9.1.2 代数化器 220 9.1.3 优化 221 9.2 执行计划缓冲 227 9.3 执行计划组件 227 9.3.1 查询计划 227 9.3.2 执行上下文 227 9.4 执行计划的老化 228 9.5 分析执行计划缓冲 228 9.6 执行计划重用 229 9.6.1 即席工作负载 230 9.6.2 预定义工作负载 231 9.6.3 即席工作负载的计划可重用性 231 9.6.4 预定义工作负载的计划可重用性 239 9.7 查询计划Hash和查询Hash 248 9.8 执行计划缓冲建议 251 9.8.1 明确地参数化查询的可变部分 252 9.8.2 使用存储过程实现业务功能 252 9.8.3 使用sp_executesql编程以避免存储过程维护 252 9.8.4 实现准备/执行模式以避免重传查询字符串 253 9.8.5 避免即席查询 253 9.8.6 对于动态查询sp_executesql优于EXECUTE 253 9.8.7 小心地参数化查询的可变部分 254 9.8.8 不要允许查询中对象的隐含解析 254
9.9
小结 254 第10章 存储过程重编译 256 10.1 重编译的好处和缺点 256 10.2 确认导致重编译的语句 258 10.3 分析重编译起因 260 10.3.1 架构或绑定变化 261 10.3.2 统计变化 261 10.3.3 延迟对象解析 264 10.3.4 SET选项变化 266 10.3.5 执行计划老化 266 10.3.6 显式调用sp_recompile 267 10.3.7 显式使用RECOMPILE子句 268 10.4 避免重编译 269 10.4.1 不要交替使用DDL和DML语句 270 10.4.2 避免统计变化引起的重编译 271 10.4.3 使用表变量 273 10.4.4 避免在存储过程中修改SET选项 275 10.4.5 使用OPTIMIZE FOR查询提示 276 10.4.6 使用计划指南 277 10.5 小结 281 第11章 查询设计分析 282 11.1 查询设计建议 282 11.2 在小结果集上操作 283 11.2.1 限制选择列表中的列数 283 11.2.2 使用高选择性的WHERE子句 284 11.3 有效地使用索引 284 11.3.1 避免不可参数化的搜索条件 285 11.3.2 避免WHERE子句列上的算术运算符 289 11.3.3 避免WHERE子句列上的函数 290 11.4 避免优化器提示 292 11.4.1 连接提示 293 11.4.2 索引提示 295 11.5 使用域和参照完整性 296 11.5.1 非空约束 297 11.5.2 声明参照完整性 299 11.6 避免资源密集型查询 301 11.6.1 避免数据类型转换 301 11.6.2 使用EXISTS代替COUNT(*)验证数据存在 303 11.6.3 使用UNION ALL代替UNION 304 11.6.4 为聚合和排序操作使用索引 305 11.6.5 避免在批查询中的局部变量 306 11.6.6 小心地命名存储过程 309 11.7 减少网络传输数量 311 11.7.1 同时执行多个查询 311 11.7.2 使用SET NOCOUNT 311 11.8 降低事务开销 312 11.8.1 减少日志开销 312 11.8.2 减少锁开销 314 11.9 小结 315 第12章 阻塞分析 316 12.1 阻塞基础知识 316 12.2 理解阻塞 317 12.2.1 原子性 317 12.2.2 一致性 320 12.2.3 隔离性 320 12.2.4 持久性 321 12.3 数据库锁 321 12.3.1 锁粒度 322 12.3.2 锁升级 325 12.3.3 锁模式 326 12.3.4 锁兼容性 332 12.4 隔离级别 332 12.4.1 未提交读 333 12.4.2 已提交读 333 12.4.3 可重复读 335 12.4.4 可序列化(Serializable) 338 12.4.5 快照(Snapshot) 343 12.5 索引对锁的作用 343 12.5.1 非聚簇索引的作用 344 12.5.2 聚簇索引的作用 346 12.5.3 索引在可序列化隔离级别上的作用 346 12.6 捕捉阻塞信息 347 12.6.1 使用SQL捕捉阻塞信息 347 12.6.2 Profiler跟踪和被阻塞进程报告事件 349 12.7 阻塞解决方案 351 12.7.1 优化查询 352 12.7.2 降低隔离级别 352 12.7.3 分区争用的数据 353 12.7.4 争用数据上的覆盖索引 354 12.8 减少阻塞的建议 354 12.9 自动化侦测和收集阻塞信息 355 12.10 小结 359 第13章 死锁分析 360 13.1 死锁基础知识 360 13.2 使用错误处理来捕捉死锁 361 13.3 死锁分析 362 13.3.1 收集死锁信息 362 13.3.2 分析死锁 364 13.4 避免死锁 368 13.4.1 按照相同的时间顺序访问资源 368 13.4.2 减少被访问资源的数量 369 13.4.3 最小化锁的争用 369 13.5 小结 370 第14章 游标开销分析 372 14.1 游标基础知识 372 14.1.1 游标位置 373 14.1.2 游标并发性 374 14.1.3 游标类型 376 14.2 游标开销比较 378 14.2.1 游标位置的开销比较 378 14.2.2 游标并发性上的开销比较 380 14.2.3 在游标类型上的开销比较 381 14.3 默认结果集 383 14.3.1 好处 384 14.3.2 缺点 384 14.4 分析SQL Server游标开销 386 14.5 游标建议 390 14.6 小结 392 第15章 数据库工作负载优化 393 15.1 工作负载优化基础知识 393 15.2 工作负载优化步骤 394 15.3 捕捉工作负载 397 15.4 分析工作负载 399 15.5 识别开销最大的查询 400 15.6 确定开销最大的查询的基线资源使用 402 15.6.1 总体资源使用 402 15.6.2 详细资源使用 402 15.7 分析和优化外部因素 405 15.7.1 分析应用程序使用的批级别选项 405 15.7.2 分析统计有效性 406 15.7.3 分析碎片整理需求 406 15.8 分析开销最大的查询的内部行为 410 15.8.1 分析查询执行计划 410 15.8.2 识别执行计划中开销较大的步骤 412 15.8.3 分析处理策略的效率 412 15.9 优化代价最大的查询 412 15.9.1 修改现有索引 413 15.9.2 分析连接提示的应用 415 15.9.3 避免聚簇索引扫描操作 417 15.9.4 修改过程 418 15.10 分析对数据库工作负载的影响 420 15.11 迭代各个优化阶段 421 15.12 小结 424 第16章 SQL Server优化检查列表 425 16.1 数据库设计 425 16.1.1 平衡不足和过多的规范化 426 16.1.2 从实体完整性约束中得利 427 16.1.3 从域和参照完整性约束中得利 428 16.1.4 采用索引设计最佳实践 430 16.1.5 避免在存储过程名称中使用sp_前缀 431 16.1.6 最小化触发器的使用 431 16.2 查询设计 432 16.2.1 使用SET NOCOUNT ON命令 432 16.2.2 显式定义对象所有者 432 16.2.3 避免不可参数化的搜索条件 432 16.2.4 避免WHERE子句列上的算术运算符 433 16.2.5 避免优化器提示 434 16.2.6 远离嵌套视图 434 16.2.7 确保没有隐含的数据类型转换 435 16.2.8 最小化日志开销 435 16.2.9 采用重用执行计划的最佳实践 435 16.2.10 采用数据库事务最佳实践 436 16.2.11 消除或减少数据库游标开销 437 16.3 配置设置 437 16.3.1 Affinity Mask 437 16.3.2 内存配置选项 437 16.3.3 并行性开销阈值 438 16.3.4 最大并行度 438 16.3.5 优化即席工作负载 438 16.3.6 查询调控器开销限制 439 16.3.7 填充因子(%) 439 16.3.8 被阻塞过程阈值 439 16.3.9 数据库文件布局 439 16.3.10 数据库压缩 440 16.4 数据库管理 440 16.4.1 保持统计最新 440 16.4.2 保持最小数量的索引碎片数量 441 16.4.3 循环使用SQL错误日志文件 441 16.4.4 避免像AUTO_CLOSE或AUTO_SHRINK这样的自动化数据库功能 441 16.4.5 最小化SQL跟踪开销 442 16.5 数据库备份 442 16.5.1 增量和事务日志备份频率 442 16.5.2 备份分布 443 16.5.3 备份压缩 444 16.6 小结 444 作者介绍 作者:(美国)弗里奇(Grant Fritchey) (美国)达姆(Sajal Dam) 译者:姚军 弗里奇(Grant Fritchey),为FM Global(一家行业领先的工程和保险公司)工作,担任首席DBA。他使用各种语言(如VB、
C#
和Java等)开发了许多大规模的应用程序,从版本6.0开始使用SQL Server。他曾经为3家失败的.com公司担任财务和咨询工作,还是Dissecting SQL Server Execution Plans一书的作者。 达姆(Sajal Dam),拥有位于印度班加罗尔的印度理工学院的计算机科学技术硕士学位,并且使用微软技术超过16年。他已经在设计数据库应用和管理软件开发方面拥有了很广泛的背景。Saial还在从前端网页到后端数据库的基于微软技术的应用程序上,具备了故障定位和性能优化的大量经验。他有许多为《财富》500强公司设计可伸缩的数据库解决方案和最大化数据库环境性能的经验。
SQLServer
2008查询性能优化 1/2
书名:
SQLServer
2008查询性能优化 作者: 弗里奇(Grant Fritchey) 出版社: 人民邮电出版社 出版日期: 2010年8月1日 ISBN: 9787115230294 编辑推荐 《SQL Server 2008查询性能优化》为你提供了处理查询性能所需要的工具。建立、维护数据库和数据库服务器可能是个困难的工作。当服务器的运行越来越慢时,这个工作就变得更加困难。来自用户的愤怒的电话以及站在你办公桌周围的管理人员都使你很不快活。在开发代码的同时,如果你花费时间和精力来开发一个性能故障排错的方法。那么你就能避免这种情况——至少可以快速而有效地做出反应。《SQL Server 2008查询性能优化》指出的性能要点之一是数据库随着用户和数据的日益增多而进行扩展的必要性。你需要理解性能低下的起因。以及识别并修复它们的方法。《SQL Server 2008查询性能优化》将帮助你: 使用性能监视器、SQL Trace以及动态管理视图和函数建立性能基线 理解一般系统中发生瓶颈的地方。以及解决瓶颈的方法 识别常见性能问题以及对其快速处理的方法 实施修复甚至预防性能问题的T-SQL最佳实践 《SQL Server 2008查询性能优化》不是理论书籍,它的目的是帮助你避免数据库出现性能低下的状况,它还能帮助你保住你的工作。 内容提要 《SQL Server 2008查询性能优化》通过大量实例,详细介绍了SQL Server数据库系统优化的各种方法和技巧。内容涵盖了数据库应用系统中各种性能瓶颈的表现形式及其发生的根源和解决方法,从硬件瓶颈到查询、索引设计以及数据库管理等,贯穿了数据库系统知识的各个方面。最后以一个实际的工作负载将所有技巧联系起来,并且提供了“宝典”式的最佳实践列表。 《SQL Server 2008查询性能优化》适合于关心数据库应用系统性能的开发人员和数据库管理人员阅读。通过阅读《SQL Server 2008查询性能优化》,不仅可以学习到数据库性能管理的许多知识和技巧,还有助于养成良好的编程习惯,为实现高性能的数据库应用系统打下基础。 目录 第1章 SQL查询性能调整 1 1.1 性能调整过程 2 1.1.1 核心过程 2 1.1.2 迭代过程 4 1.2 性能vs.价格 7 1.2.1 性能目标 7 1.2.2 “足够好”的调整 7 1.3 性能基线 8 1.4 工作的重点 9 1.5 SQL Server性能杀手 10 1.5.1 低质量的索引 10 1.5.2 不精确的统计 11 1.5.3 过多的阻塞和死锁 11 1.5.4 不基于数据集的操作 11 1.5.5 低质量的查询设计 12 1.5.6 低质量的数据库设计 12 1.5.7 过多的碎片 12 1.5.8 不可重用的执行计划 13 1.5.9 低质量的执行计划 13 1.5.10 频繁重编译计划 13 1.5.11 游标的错误使用 13 1.5.12 错误配置数据库日志 14 1.5.13 过多使用或者错误配置tempdb 14 1.6 小结 14 第2章 系统性能分析 15 2.1 性能监视器工具 15 2.2 动态管理视图 17 2.3 硬件资源瓶颈 18 2.3.1 识别瓶颈 18 2.3.2 瓶颈解决方案 19 2.4 内存瓶颈分析 19 2.4.1 SQL Server内存管理 20 2.4.2 Available Bytes 23 2.4.3 Pages/sec和Page Faults/sec计数器 23 2.4.4 Buffer Cache Hit Ratio 24 2.4.5 Page Life Expectancy 24 2.4.6 Checkpoint Pages/sec 24 2.4.7 Lazy writes/sec 24 2.4.8 Memory Grants Pending 25 2.4.9 Target Server Memory(KB)和Total Server Memory(KB) 25 2.5 内存瓶颈解决方案 25 2.5.1 优化应用程序工作负载 26 2.5.2 为SQL Server分配更多内存 27 2.5.3
增加
系统内存 27 2.5.4 更换32位处理器为64位处理器 27 2.5.5 启用3GB进程空间 28 2.5.6 在32位SQL Server中使用4GB以上内存 28 2.6 磁盘瓶颈分析 29 2.6.1 磁盘计数器 30 2.6.2 % Disk Time 30 2.6.3 Current Disk Queue Length 31 2.6.4 Disk Transfers/sec 31 2.6.5 Disk Bytes/sec 32 2.6.6 Avg. Disk Sec/Read和Avg. Disk Sec/Write 32 2.7 磁盘瓶颈解决方案 32 2.7.1 优化应用程序工作负载 33 2.7.2 使用更快的磁盘驱动器 33 2.7.3 使用一个RAID阵列 33 2.7.4 使用SAN系统 35 2.7.5 恰当地对齐磁盘 35 2.7.6 使用电池后备的控制器缓存 36 2.7.7 添加系统内存 36 2.7.8 创建多个文件和文件组 36 2.7.9 将表和索引放在不同的磁盘上 39 2.7.10 将日志文件保存到独立的物理磁盘 39 2.7.11 表的分区 40 2.8 处理器瓶颈分析 40 2.8.1 % Processor Time 41 2.8.2 % Privileged Time 41 2.8.3 Processor Queue Length 42 2.8.4 Context Switches/sec 42 2.8.5 Batch Requests/sec 42 2.8.6 SQL Compilations/sec 42 2.8.7 SQL Recompilations/sec 43 2.9 处理器瓶颈解决方案 43 2.9.1 优化应用程序工作负载 43 2.9.2 消除过多的编译/重编译 43 2.9.3 使用更多或更快的处理器 44 2.9.4 使用大的二级(L2)/三级(L3)缓存 44 2.9.5 运行更高效的控制器/驱动程序 44 2.9.6 不运行不必要的软件 45 2.10 网络瓶颈分析 45 2.10.1 Bytes Total/sec 45 2.10.2 % Net Utilization 46 2.11 网络瓶颈解决方案 46 2.11.1 优化应用程序工作负载 46 2.11.2
增加
网络适配器 47 2.11.3 节制和避免中断 47 2.12 SQL Server总体性能 47 2.12.1 丢失索引 48 2.12.2 数据库阻塞 49 2.12.3 不可重用的执行计划 50 2.12.4 总体表现 50 2.13 创建一个基线 51 2.13.1 创建性能计数器的一个可重用列表 51 2.13.2 使用性能计数器列表创建一个计数器日志 54 2.13.3 最小化性能监视器开销 55 2.14 以基线为标准的系统状态分析 56 2.15 小结 57 第3章 SQL查询性能分析 58 3.1 SQL Profiler工具 58 3.1.1 Profiler跟踪 59 3.1.2 事件 60 3.1.3 数据列 62 3.1.4 过滤器 64 3.1.5 跟踪模板 65 3.1.6 跟踪数据 65 3.2 跟踪的自动化 66 3.2.1 使用GUI捕捉跟踪 66 3.2.2 使用存储过程捕捉跟踪 67 3.3 结合跟踪和性能监视器输出 68 3.4 SQL Profiler建议 69 3.4.1 限制事件和数据列 69 3.4.2 丢弃性能分析所用的启动事件 70 3.4.3 限制跟踪输出大小 70 3.4.4 避免在线数据列排序 71 3.4.5 远程运行Profiler 71 3.4.6 限制使用某些事件 71 3.5 没有Profiler情况下的查询性能度量 71 3.6 开销较大的查询 72 3.6.1 识别开销较大的查询 73 3.6.2 识别运行缓慢的查询 77 3.7 执行计划 78 3.7.1 分析查询执行计划 80 3.7.2 识别执行计划中开销较大的步骤 82 3.7.3 分析索引有效性 83 3.7.4 分析连接有效性 84 3.7.5 实际执行计划vs.估算执行计划 88 3.7.6 计划缓存 89 3.8 查询开销 90 3.8.1 客户统计 90 3.8.2 执行时间 91 3.8.3 STATISTICS IO 92 3.9 小结 94 第4章 索引分析 95 4.1 什么是索引 95 4.1.1 索引的好处 97 4.1.2 索引开销 98 4.2 索引设计建议 100 4.2.1 检查WHERE子句和连接条件列 100 4.2.2 使用窄索引 102 4.2.3 检查列的唯一性 103 4.2.4 检查列数据类型 106 4.2.5 考虑列顺序 107 4.2.6 考虑索引类型 109 4.3 聚簇索引 109 4.3.1 堆表 110 4.3.2 与非聚簇索引的关系 110 4.3.3 聚簇索引建议 112 4.4 非聚簇索引 117 4.4.1 非聚簇索引维护 117 4.4.2 定义书签查找 117 4.4.3 非聚簇索引建议 118 4.5 聚簇索引vs.非聚簇索引 118 4.5.1 聚簇索引相对于非聚簇索引的好处 119 4.5.2 非聚簇索引相对于聚簇索引的好处 120 4.6 高级索引技术 121 4.6.1 覆盖索引 122 4.6.2 索引交叉 124 4.6.3 索引连接 125 4.6.4 过滤索引 126 4.6.5 索引视图 128 4.6.6 索引压缩 132 4.7 特殊索引类型 134 4.7.1 全文索引 134 4.7.2 空间索引 135 4.7.3 XML 135 4.8 索引的附加特性 135 4.8.1 不同的列排序顺序 135 4.8.2 在计算列上的索引 136 4.8.3 BIT数据类型列上的索引 136 4.8.4 作为一个查询处理的CREATE INDEX语句 136 4.8.5 并行索引创建 136 4.8.6 在线索引创建 137 4.8.7 考虑数据库引擎调整顾问 137 4.9 小结 137 第5章 数据库引擎调整顾问 139 5.1 数据库引擎调整顾问机制 139 5.2 数据库引擎调整顾问实例 143 5.2.1 调整一个查询 143 5.2.2 调整一个跟踪工作负载 146 5.3 数据库引擎调整顾问的局限性 148 5.4 小结 149 第6章 书签查找分析 150 6.1 书签查找的目的 150 6.2 书签查找的缺点 152 6.3 分析书签查找的起因 153 6.4 解决书签查找 155 6.4.1 使用一个聚簇索引 155 6.4.2 使用一个覆盖索引 155 6.4.3 使用索引连接 158 6.5 小结 160 第7章 统计分析 161 7.1 统计在查询优化中的角色 161 7.2 索引列上的统计 162 7.2.1 更新统计的好处 162 7.2.2 过时统计的缺点 164 7.3 在非索引列上的统计 165 7.3.1 在非索引列上统计的好处 166 7.3.2 丢失非索引列上的统计的缺点 169 7.4 分析统计 172 7.4.1 密度 174 7.4.2 多列索引上的统计 174 7.4.3 过滤索引上的统计 175 7.5 统计维护 176 7.5.1 自动维护 177 7.5.2 人工维护 179 7.5.3 统计维护状态 181 7.6 为查询分析统计的有效性 182 7.6.1 解决丢失统计问题 182 7.6.2 解决过时统计问题 184 7.7 建议 186 7.7.1 统计的向后兼容性 186 7.7.2 自动创建统计 186 7.7.3 自动更新统计 187 7.7.4 自动异步更新统计 189 7.7.5 收集统计的采样数量 189 7.8 小结 190 第8章 碎片分析 191 8.1 碎片的成因 191 8.1.1 UPDATE语句引起的页面分割 193 8.1.2 INSERT语句引起的页面分割 196 8.2 碎片开销 197 8.3 分析碎片数量 200 8.4 碎片解决方案 204 8.4.1 卸载并重建索引 204 8.4.2 使用DROP_EXISTING子句重建索引 205 8.4.3 执行ALTER INDEX REBUILD语句 205 8.4.4 执行ALTER INDEX REORGANIZE语句 207 8.5 填充因子的重要性 209 8.6 自动维护 212 8.7 小结 217 第9章 执行计划缓冲分析 218 9.1 执行计划生成 218 9.1.1 解析器 219 9.1.2 代数化器 220 9.1.3 优化 221 9.2 执行计划缓冲 227 9.3 执行计划组件 227 9.3.1 查询计划 227 9.3.2 执行上下文 227 9.4 执行计划的老化 228 9.5 分析执行计划缓冲 228 9.6 执行计划重用 229 9.6.1 即席工作负载 230 9.6.2 预定义工作负载 231 9.6.3 即席工作负载的计划可重用性 231 9.6.4 预定义工作负载的计划可重用性 239 9.7 查询计划Hash和查询Hash 248 9.8 执行计划缓冲建议 251 9.8.1 明确地参数化查询的可变部分 252 9.8.2 使用存储过程实现业务功能 252 9.8.3 使用sp_executesql编程以避免存储过程维护 252 9.8.4 实现准备/执行模式以避免重传查询字符串 253 9.8.5 避免即席查询 253 9.8.6 对于动态查询sp_executesql优于EXECUTE 253 9.8.7 小心地参数化查询的可变部分 254 9.8.8 不要允许查询中对象的隐含解析 254
9.9
小结 254 第10章 存储过程重编译 256 10.1 重编译的好处和缺点 256 10.2 确认导致重编译的语句 258 10.3 分析重编译起因 260 10.3.1 架构或绑定变化 261 10.3.2 统计变化 261 10.3.3 延迟对象解析 264 10.3.4 SET选项变化 266 10.3.5 执行计划老化 266 10.3.6 显式调用sp_recompile 267 10.3.7 显式使用RECOMPILE子句 268 10.4 避免重编译 269 10.4.1 不要交替使用DDL和DML语句 270 10.4.2 避免统计变化引起的重编译 271 10.4.3 使用表变量 273 10.4.4 避免在存储过程中修改SET选项 275 10.4.5 使用OPTIMIZE FOR查询提示 276 10.4.6 使用计划指南 277 10.5 小结 281 第11章 查询设计分析 282 11.1 查询设计建议 282 11.2 在小结果集上操作 283 11.2.1 限制选择列表中的列数 283 11.2.2 使用高选择性的WHERE子句 284 11.3 有效地使用索引 284 11.3.1 避免不可参数化的搜索条件 285 11.3.2 避免WHERE子句列上的算术运算符 289 11.3.3 避免WHERE子句列上的函数 290 11.4 避免优化器提示 292 11.4.1 连接提示 293 11.4.2 索引提示 295 11.5 使用域和参照完整性 296 11.5.1 非空约束 297 11.5.2 声明参照完整性 299 11.6 避免资源密集型查询 301 11.6.1 避免数据类型转换 301 11.6.2 使用EXISTS代替COUNT(*)验证数据存在 303 11.6.3 使用UNION ALL代替UNION 304 11.6.4 为聚合和排序操作使用索引 305 11.6.5 避免在批查询中的局部变量 306 11.6.6 小心地命名存储过程 309 11.7 减少网络传输数量 311 11.7.1 同时执行多个查询 311 11.7.2 使用SET NOCOUNT 311 11.8 降低事务开销 312 11.8.1 减少日志开销 312 11.8.2 减少锁开销 314 11.9 小结 315 第12章 阻塞分析 316 12.1 阻塞基础知识 316 12.2 理解阻塞 317 12.2.1 原子性 317 12.2.2 一致性 320 12.2.3 隔离性 320 12.2.4 持久性 321 12.3 数据库锁 321 12.3.1 锁粒度 322 12.3.2 锁升级 325 12.3.3 锁模式 326 12.3.4 锁兼容性 332 12.4 隔离级别 332 12.4.1 未提交读 333 12.4.2 已提交读 333 12.4.3 可重复读 335 12.4.4 可序列化(Serializable) 338 12.4.5 快照(Snapshot) 343 12.5 索引对锁的作用 343 12.5.1 非聚簇索引的作用 344 12.5.2 聚簇索引的作用 346 12.5.3 索引在可序列化隔离级别上的作用 346 12.6 捕捉阻塞信息 347 12.6.1 使用SQL捕捉阻塞信息 347 12.6.2 Profiler跟踪和被阻塞进程报告事件 349 12.7 阻塞解决方案 351 12.7.1 优化查询 352 12.7.2 降低隔离级别 352 12.7.3 分区争用的数据 353 12.7.4 争用数据上的覆盖索引 354 12.8 减少阻塞的建议 354 12.9 自动化侦测和收集阻塞信息 355 12.10 小结 359 第13章 死锁分析 360 13.1 死锁基础知识 360 13.2 使用错误处理来捕捉死锁 361 13.3 死锁分析 362 13.3.1 收集死锁信息 362 13.3.2 分析死锁 364 13.4 避免死锁 368 13.4.1 按照相同的时间顺序访问资源 368 13.4.2 减少被访问资源的数量 369 13.4.3 最小化锁的争用 369 13.5 小结 370 第14章 游标开销分析 372 14.1 游标基础知识 372 14.1.1 游标位置 373 14.1.2 游标并发性 374 14.1.3 游标类型 376 14.2 游标开销比较 378 14.2.1 游标位置的开销比较 378 14.2.2 游标并发性上的开销比较 380 14.2.3 在游标类型上的开销比较 381 14.3 默认结果集 383 14.3.1 好处 384 14.3.2 缺点 384 14.4 分析SQL Server游标开销 386 14.5 游标建议 390 14.6 小结 392 第15章 数据库工作负载优化 393 15.1 工作负载优化基础知识 393 15.2 工作负载优化步骤 394 15.3 捕捉工作负载 397 15.4 分析工作负载 399 15.5 识别开销最大的查询 400 15.6 确定开销最大的查询的基线资源使用 402 15.6.1 总体资源使用 402 15.6.2 详细资源使用 402 15.7 分析和优化外部因素 405 15.7.1 分析应用程序使用的批级别选项 405 15.7.2 分析统计有效性 406 15.7.3 分析碎片整理需求 406 15.8 分析开销最大的查询的内部行为 410 15.8.1 分析查询执行计划 410 15.8.2 识别执行计划中开销较大的步骤 412 15.8.3 分析处理策略的效率 412 15.9 优化代价最大的查询 412 15.9.1 修改现有索引 413 15.9.2 分析连接提示的应用 415 15.9.3 避免聚簇索引扫描操作 417 15.9.4 修改过程 418 15.10 分析对数据库工作负载的影响 420 15.11 迭代各个优化阶段 421 15.12 小结 424 第16章 SQL Server优化检查列表 425 16.1 数据库设计 425 16.1.1 平衡不足和过多的规范化 426 16.1.2 从实体完整性约束中得利 427 16.1.3 从域和参照完整性约束中得利 428 16.1.4 采用索引设计最佳实践 430 16.1.5 避免在存储过程名称中使用sp_前缀 431 16.1.6 最小化触发器的使用 431 16.2 查询设计 432 16.2.1 使用SET NOCOUNT ON命令 432 16.2.2 显式定义对象所有者 432 16.2.3 避免不可参数化的搜索条件 432 16.2.4 避免WHERE子句列上的算术运算符 433 16.2.5 避免优化器提示 434 16.2.6 远离嵌套视图 434 16.2.7 确保没有隐含的数据类型转换 435 16.2.8 最小化日志开销 435 16.2.9 采用重用执行计划的最佳实践 435 16.2.10 采用数据库事务最佳实践 436 16.2.11 消除或减少数据库游标开销 437 16.3 配置设置 437 16.3.1 Affinity Mask 437 16.3.2 内存配置选项 437 16.3.3 并行性开销阈值 438 16.3.4 最大并行度 438 16.3.5 优化即席工作负载 438 16.3.6 查询调控器开销限制 439 16.3.7 填充因子(%) 439 16.3.8 被阻塞过程阈值 439 16.3.9 数据库文件布局 439 16.3.10 数据库压缩 440 16.4 数据库管理 440 16.4.1 保持统计最新 440 16.4.2 保持最小数量的索引碎片数量 441 16.4.3 循环使用SQL错误日志文件 441 16.4.4 避免像AUTO_CLOSE或AUTO_SHRINK这样的自动化数据库功能 441 16.4.5 最小化SQL跟踪开销 442 16.5 数据库备份 442 16.5.1 增量和事务日志备份频率 442 16.5.2 备份分布 443 16.5.3 备份压缩 444 16.6 小结 444 作者介绍 作者:(美国)弗里奇(Grant Fritchey) (美国)达姆(Sajal Dam) 译者:姚军 弗里奇(Grant Fritchey),为FM Global(一家行业领先的工程和保险公司)工作,担任首席DBA。他使用各种语言(如VB、
C#
和Java等)开发了许多大规模的应用程序,从版本6.0开始使用SQL Server。他曾经为3家失败的.com公司担任财务和咨询工作,还是Dissecting SQL Server Execution Plans一书的作者。 达姆(Sajal Dam),拥有位于印度班加罗尔的印度理工学院的计算机科学技术硕士学位,并且使用微软技术超过16年。他已经在设计数据库应用和管理软件开发方面拥有了很广泛的背景。Saial还在从前端网页到后端数据库的基于微软技术的应用程序上,具备了故障定位和性能优化的大量经验。他有许多为《财富》500强公司设计可伸缩的数据库解决方案和最大化数据库环境性能的经验。
C#
程序开发范例宝典9
第9章 数据库技术 355
9.1 连接Access数据库 356
实例254 连接Access数据库 356
实例255 连接加密的Access数据库 357
实例256 自动识别Access 2000数据库路径 358
实例257 连接网络上共享的Access 2000数据库 360
9.2 连接SQL Server数据库 361
实例258 使用ODBC DSN连接SQL Server数据库 361
实例259 使用ODBC非DSN连接SQL Server数据库 364
实例260 使用OLE DB连接SQL Server数据库 365
实例261 建立SQL Server数据库连接 366
9.3 连接其他数据库 367
实例262 连接Excel 367
实例263 连接Oracle数据库 368
9.4 数据库结构的读取与修改 369
实例264 读取SQL Server数据库结构 369
实例265 修改SQL Server数据库结构 372
9.5 数据录入 374
实例266 利用数据绑定控件录入数据 374
实例267 使用ADO.NET对象录入数据 376
实例268 利用SQL语句录入数据 379
实例269 利用存储过程录入数据 380
9.6 图片存取技术 383
实例270 使用存取文件名的方法存取图片 383
实例271 使用ADO.NET对象向SQL Server数据库存入图片 384
9.7 数据修改 387
实例272 利用数据绑定控件修改数据 387
实例273 利用数据对象修改数据 390
实例274 利用SQL语句修改数据 391
实例275 利用存储过程修改数据 393
9.8 数据保存前判断 395
实例276 判断输入数据是否符合要求 395
实例277 通过存储过程实现自动编号 398
9.9
数据
删除
401
实例278
删除
表格中指定的记录 401
实例279 利用SQL语句
删除
数据 402
9.10 数据记录 403
实例280 分页显示信息 403
实例281 移动记录 404
9.11 数据维护 406
实例282 在
C#
中分离SQL Server数据库 406
实例283 在
C#
中附加SQL Server数据库 407
实例284 在
C#
中附加单文件SQL Server数据库 409
9.12 数据备份恢复 410
实例285 备份SQL Server数据库 410
实例286 还原SQL Server数据库 413
9.13 管理系统开发相关 415
实例287 开启SQL Server数据库 415
实例288 断开SQL Server数据库与其他应用程序的连接 417
实例289 带图像列表的系统登录程序 419
实例290 利用SQL语句执行外围命令 420
实例291 系统初始化 421
C#
.net_经典编程例子400个
第1章 窗体与界面设计 11.1 菜单应用实例 2实例001 带历史信息的菜单 2实例002 菜单动态合并 3实例003 像开始菜单一样漂亮的菜单 4实例004 任务栏托盘菜单 5实例005 可以拉伸的菜单界面 5实例006 菜级联菜单 71.2 工具栏设计 7实例007 带背景的工具栏 7实例008 浮动工具栏 8实例009 带下拉菜单的工具栏 9实例010 具有提示功能的工具栏 91.3 状态栏设计 10实例011 在状态栏中显示检查框 10实例012 带进度条的状态栏 11实例013 状态栏中加入图标 121.4 导航菜单界面 12实例014 OutLook界面 12实例015 带导航菜单的主界面 14实例016 图形化的导航界面 151.5 特色程序界面 17实例017 类QQ的程序界面 17实例018 类似Windows Xp的程序界面 18实例019 以图形按钮显示的界面 20实例020 以树形显示的程序界面 21实例021 动态按钮的窗体界面 221.6 特殊形状的窗体 24实例022 非矩形窗体 24实例023 建立字体形状窗体 25实例024 控件随窗体自动调整 26实例025 带分隔栏的窗体 27实例026 随机更换主界面背景 271.7 多媒体光盘 28实例027 自动启动的多媒体光盘程序 28实例028 为触摸屏程序添加虚拟键盘 291.8 窗体效果 30实例029 半透明渐显窗体 31实例030 窗口颜色的渐变 321.9 窗体动画 33实例031 窗体中的滚动字幕 33实例032 动画显示窗体 34实例033 制作闪烁的窗体 35实例034 直接在窗体上绘图 37实例035 动画形式的程序界面 381.10 标题栏窗体 39实例036 使窗体标题栏文字右对齐 39实例037 没有标题栏但可以改变大小的窗口 391.11 设置窗体位置 40实例038 设置窗体在屏幕中的位置 40实例039 始终在最上面的窗体 411.12 设置窗体大小 42实例040 限制窗体大小 42实例041 获取桌面大小 42实例042 在窗口间移动按钮 43实例043 如何实现Office助手 441.13 窗体控制技术 45实例044 在关闭窗口前加入确认对话框 45实例045 使用任意组件拖动窗体 46实例046 修改提示字体及颜色 471.14 其他技术 48实例047 如何为MDI类型窗体设置背景图片 48实例048 向提示框中添加图标 49第2章 控件应用 512.1 TextBox控件应用 52实例049 只允许输入数字的TextBox控件 52实例050 限制用户名称长度及设置密码文本 54实例051 自动
删除
非法字符 55实例052 为TextBox控件添加列表选择框 572.2 Button控件应用 58实例053 在Button按钮中显示图标 582.3 ComboBox控件应用 59实例054 将数据表中的字段添加到ComboBox控件 59实例055 带查询功能的ComboBox控件 612.4 RichTextBox控件应用 63实例056 利用RichTextBox控件实现文档管理功能 63实例057 利用RichTextBox控件实现文字定位与标识 65实例058 用RichTextBox控件显示图文数据 672.5 ListBox控件应用 68实例059 在ListBox控件间交换数据 68实例060 将数据库数据添加到组合框中 70实例061 借助绑定控件实现数据选择录入 71实例062 ListBox拒绝添加重复信息 722.6 选择类控件应用 73实例063 利用选择控件实现权限设置 74实例064 利用选择控件实现复杂查询 762.7 ListView控件应用 78实例065 ListView列表拒绝添加重复信息 78实例066 将数据库数据添加到ListView控件 80实例067 用ListView控件制作导航界面 81实例068 在ListView控件中对数据排序或统计 83实例069 在ListView控件中绘制底纹 84实例070 在列表视图中拖动视图项 85实例071 用ListView控件选取整行数据 88实例072 用ListView控件开发登录界面 892.8 TreeView控件应用 91实例073 将数据库数据显示到树视图中 91实例074 用TreeView控件制作导航界面 93实例075 用TreeView控件遍历磁盘目录 94实例076 TreeView控件在数据库中的应用 96实例077 带复选框的树状菜单 982.9 其他控件典型应用 100实例078 TrackBar的简单应用 100实例079 SplitContainer的应用 102实例080 MaskedTextBox控件的简单应用 103实例081 制作日历计划任务 105实例082 ImageAnimator类显示动画图片 108实例083 QQ头像列表 1102.10 控件技术 112实例084 程序运行时智能增减控件 112实例085 控制焦点移动 114实例086 动态创建控件 115实例087 在Button按钮上绘图 1162.11 焦点变换与输入控制 117实例088 按回车键焦点在控件中移动的录入窗口 117实例089 程序运行时拖动控件 119实例090 控件得到焦点时变色 120实例091 控件的输入限制 1212.12 特殊控件 122实例092 为控件制作立体效果 122实例093 获取控件名称和内容 124第3章 组件应用 1273.1 BackgroundWorker组件 128实例094 BackgroundWorker组件执行异步操作 1283.2 ErrorProvider组件 130实例095 使用ErrorProvider组件验证文本框输入 130实例096 利用ErrorProvider组件查看数据集中的错误 1323.3 EventLog组件 134实例097 使用EventLog组件读写Windows系统事件日志 134实例098 使用EventLog组件保存Windows系统日志 136实例099 使用EventLog组件向本机现有日志中添加条目 1383.4 FileSystemWatcher组件 140实例100 使用FileSystemWatcher组件监视系统日志文件是否被更改 1403.5 HelpProvider组件 142实例101 使用HelpProvider组件调用帮助文件 1423.6 Process组件 143实例102 使用Process组件访问本地进程 1433.7 Timer组件 145实例103 使用Timer组件制作计时器 145实例104 使用Timer组件显示当前系统时间 150实例105 使用Timer组件制作左右飘动的窗体 151实例106 使用Timer组件实现奥运倒计时 1523.8 ServiceController组件 154实例107 使用ServiceController组件控制计算机的服务 1543.9 ImageList组件 156实例108 使用ImageList组件制作动画图片 1563.10 DirectoryEntry组件 157实例109 使用DirectoryEntry组件建立虚拟目录 158第4章 图形技术 1614.1 绘制图形 162实例110 基本图形绘制 162实例111 在图片中写入文字 163实例112 局部图片的复制 165实例113 波形图的绘制 1664.2 图形转换 168实例114 BMP转换成JPG格式 168实例115 JPG转换成BMP格式 170实例116 位图转化为WMF 171实例117 Ico文件转化为位图 172实例118 图片批量转换工具 1734.3 图像预览 175实例119 局部图像放大 175实例120 浏览大图片 177实例121 剪切图片 178实例122 图像旋转 181实例123 鼠标拖拽图像 1824.4 图形缩放与变换 183实例124 如何放大和缩小图像 183实例125 如何旋转JPG图像 184实例126 如何实现图形翻转 1854.5 图像效果 186实例127 百叶窗效果显示图像 186实例128 推拉效果显示图像 187实例129 水平交错效果显示图像 188实例130 垂直交错效果显示图像 190实例131 图像纹理效果 191实例132 图像浮雕效果 193实例133 积木效果 194实例134 马赛克效果显示图像 1954.6 图像字体 197实例135 旋转的文字 197实例136 当前系统字体列表 198实例137 空心文字 199实例138 如何在图片上平滑移动文字 2014.7 图像动画 202实例139 动画背景窗体 202实例140 随鼠标移动的图像 203实例141 十字光标定位 204实例142 抓取鼠标形状 2064.8 图像识别 207实例143 查看图片的像素 207实例144 获取指定点的RGB值 2074.9 图像工具 208实例145 获取图片类型 208实例146 简单画图程序 209实例147 看图工具 213实例148 文字保存为图片 2154.10 图像应用 215实例149 随机更换壁纸程序 216实例150 屏幕保护 217实例151 模拟石英钟 219实例152 生肖速查 221第5章 多媒体技术 2255.1 CD、VCD播放 226实例153 播放指定的avi-mid-wav文件 226实例154 获取多媒体详细信息列表 2275.2 MP3、WAV播放 228实例155 带记忆功能的MP3播放器 228实例156 自动播放的MP3播放器 231实例157 学校体操定时音乐播放 2335.3 动画播放 234实例158 播放Flash动画 234实例159 制作AVI播放器 236实例160 播放Gif动画 237实例161 利用Image制作小动画 2395.4 媒体控制 240实例162 检测是否安装声卡 240实例163 打开和关闭CDROM 241实例164 控制PC喇叭发声 2425.5 多媒体应用 243实例165 开机祝福程序 243实例166 制作家庭影集 245实例167 产品电子报价 246实例168 产品滚动展示程序 248实例169 将图片资源添加到EXE里 2495.6 屏幕保护相关程序 250实例170 电子相册屏幕保护程序 250实例171 歌曲播放屏幕保护程序 251第6章 文件系统 2536.1 创建和
删除
文件 254实例172 创建和
删除
文件夹 254实例173 建立临时文件 255实例174 根据日期动态建立文件 256实例175 清空回收站 2576.2 查找文件 258实例176 搜索文件 259实例177 检查文件是否存在 260实例178 提取指定文件夹目录 2616.3 修改文件 261实例179 更改文件名称 262实例180 修改文件属性 262实例181 修改文件及目录的名字 2646.4 文件目录 265实例182 获得临时文件目录 265实例183 获取应用程序所在目录 266实例184 得到系统当前目录 266实例185 在程序中改变当前路径 2676.5 复制文件 268实例186 移动正在使用的文件 268实例187 批量复制文件 2696.6 指定类型的文件操作 270实例188 文本文件的操作 270实例189 简单的文件加密解密 2716.7 其他 273实例190 获取窗口文本 273实例191 判断文件是否正在被使用 274实例192 在程序中调用.HLP文件 275实例193
C#
中实现文件拖放 276实例194 文件比较 276第7章 操作系统与Windows相关程序 2797.1 启动相关 280实例195 进入Windows前发出警告 280实例196 实现注销、关闭和重启计算机 2817.2 获得磁盘属性 284实例197 获得硬盘序列号 284实例198 获取映射驱动器路径 286实例199 判断驱动器类型 2877.3 磁盘相关设置 288实例200 取消磁盘共享 288实例201 检查驱动器容量 289实例202 检测磁盘是否准备好 290实例203 图表显示磁盘容量 291实例204 格式化磁盘 2937.4 系统控制 294实例205 怎样隐藏鼠标 294实例206 允许和禁止用户关机 295实例207 锁定计算机 2967.5 系统设置 297实例208 设置系统输入法 297实例209 设置桌面颜色 298实例210 鼠标交换左右键 2997.6 系统监控 299实例211 检测系统启动模式 300实例212 内存使用状态监控 301实例213 监视剪贴板内容 3027.7 系统软件信息 303实例214 获取用户名 303实例215 获取系统目录 305实例216 注册系统热键 306实例217 获取和修改BIOS计算机名 3077.8 鼠标操作 308实例218 动画鼠标 309实例219 限制鼠标活动区域 310实例220 获取鼠标在任意点的位置 311实例221 判断键盘按下的键值 3117.9 程序控制 312实例222 打开控制面板中的程序 313实例223 添加程序托盘 314实例224 不出现在任务栏上的程序 314实例225 怎样调用外部的Exe文件 315实例226 关闭外部已开启的程序 3167.10 程序运行 317实例227 防止程序多次运行 317实例228 开机后程序自动运行 319实例229 获取任务栏尺寸大小 320实例230 改变系统提示信息 321实例231 获取系统环境变量 322实例232 启动屏幕保护 3237.11 系统隐藏 324实例233 隐藏、显示任务栏 324实例234 隐藏、显示开始按钮 325实例235 查看当前系统版本 326实例236 使桌面图标文字透明 328实例237 检索系统中正在运行的任务 329实例238 列出系统中的打印机 3307.12 其他 332实例239 两种信息发送方式 332实例240 功能快捷键 336第8章 注册表 3398.1 操作注册表 340实例241 怎样存取注册表信息 340实例242 注册表保存注册信息 341实例243 设置“显示 属性”窗体 342实例244 列出注册表指定项下全部键值 3438.2 系 统 设 置 344实例245 隐藏、显示桌面图标 345实例246 隐藏驱动器 345实例247 禁用运行注册表 3478.3 IE浏览器设置 348实例248 修改IE浏览器标题栏内容 348实例249 隐藏IE浏览器的右键关联菜单 349实例250 设置IE浏览器的默认主页 350实例251 禁止修改IE浏览器主页 3518.4 应用软件设置 352实例252 设置Word 2000文档及图片的保存路径 352实例253 限制软件使用次数 353第9章 数据库技术 3559.1 连接Access数据库 356实例254 连接Access数据库 356实例255 连接加密的Access数据库 357实例256 自动识别Access 2000数据库路径 358实例257 连接网络上共享的Access 2000数据库 3609.2 连接SQL Server数据库 361实例258 使用ODBC DSN连接SQL Server数据库 361实例259 使用ODBC非DSN连接SQL Server数据库 364实例260 使用OLE DB连接SQL Server数据库 365实例261 建立SQL Server数据库连接 3669.3 连接其他数据库 367实例262 连接Excel 367实例263 连接Oracle数据库 3689.4 数据库结构的读取与修改 369实例264 读取SQL Server数据库结构 369实例265 修改SQL Server数据库结构 3729.5 数据录入 374实例266 利用数据绑定控件录入数据 374实例267 使用ADO.NET对象录入数据 376实例268 利用SQL语句录入数据 379实例269 利用存储过程录入数据 3809.6 图片存取技术 383实例270 使用存取文件名的方法存取图片 383实例271 使用ADO.NET对象向SQL Server数据库存入图片 3849.7 数据修改 387实例272 利用数据绑定控件修改数据 387实例273 利用数据对象修改数据 390实例274 利用SQL语句修改数据 391实例275 利用存储过程修改数据 3939.8 数据保存前判断 395实例276 判断输入数据是否符合要求 395实例277 通过存储过程实现自动编号 398
9.9
数据
删除
401实例278
删除
表格中指定的记录 401实例279 利用SQL语句
删除
数据 4029.10 数据记录 403实例280 分页显示信息 403实例281 移动记录 4049.11 数据维护 406实例282 在
C#
中分离SQL Server数据库 406实例283 在
C#
中附加SQL Server数据库 407实例284 在
C#
中附加单文件SQL Server数据库 4099.12 数据备份恢复 410实例285 备份SQL Server数据库 410实例286 还原SQL Server数据库 4139.13 管理系统开发相关 415实例287 开启SQL Server数据库 415实例288 断开SQL Server数据库与其他应用程序的连接 417实例289 带图像列表的系统登录程序 419实例290 利用SQL语句执行外围命令 420实例291 系统初始化 421第10章 SQL查询相关技术 42510.1 SELECT子句 426实例292 查询特定列数据 426实例293 使用列别名 428实例294 在列上加入计算 430实例295 使用函数设置条件 43110.2 查询常量 432实例296 查询数字 433实例297 查询字符串 434实例298 查询日期数据 436实例299 查询逻辑型数据 437实例300 查询空数据 43810.3 查询变量 440实例301 利用变量查询字符串数据 440实例302 利用变量查询数值型数据 441实例303 利用变量查询日期型数据 44210.4 模式查询 444实例304 利用“_”通配符进行查询 444实例305 利用“%”通配符进行查询 445实例306 利用“[]”通配符进行查询 446实例307 利用“[^]”通配符进行查询 448实例308 复杂的模式查询 44910.5 TOP和PERCENT限制查询结果 450实例309 查询前10名数据 450实例310 取出数据统计结果的前10名数据 451实例311 查询销售量占前50%的图书信息 453实例312 查询库存数量占后20%的图书信息 45410.6 周期、日期查询 455实例313 查询指定日期的数据 455实例314 查询指定时间段的数据 457实例315 按月查询数据 45810.7 比较、逻辑、重复查询 460实例316 查询数据大于指定条件的数据 460实例317 NOT与谓词进行组合条件的查询 461实例318 查询时不显示重复记录 463实例319 列出数据中的重复记录和记录条数 46510.8 在查询中使用OR和AND运算符 466实例320 利用OR运算符进行查询 466实例321 利用AND运算符进行查询 467实例322 同时利用OR、AND运算符进行查询 46910.9 排序、分组统计 471实例323 数据分组统计(单列) 471实例324 在分组查询中使用ALL关键字 473实例325 在分组查询中使用CUBE运算符 475实例326 在分组查询中使用ROLLUP 477实例327 对数据进行降序查询 479实例328 对数据进行多条件排序 480实例329 对统计结果进行排序 482实例330 按仓库分组统计图书库存(多列) 483实例331 多表分组统计 484实例332 使用COMPUTE 485实例333 使用COMPUTE BY 48710.10 聚合函数 488实例334 利用聚合函数SUM对销售额进行汇总 488实例335 利用聚合函数AVG求某班学生的平均年龄 490实例336 利用聚合函数MIN求销售额、利润最少的商品 492实例337 利用聚合函数MAX求月销售额完成最多的员工 493实例338 利用聚合函数COUNT求日销售额大于某值的商品数 495实例339 利用聚合函数First或Last求数据表中第一条或最后一条记录 49610.11 多表查询(连接查询) 498实例340 利用FROM子句进行多表查询 498实例341 使用表别名 499实例342 合并多个结果集 50110.12 嵌套查询 503实例343 简单嵌套查询 503实例344 复杂嵌套查询 504实例345 嵌套查询在查询统计中的应用 50610.13 子查询 508实例346 用子查询做派生的表 508实例347 用子查询作表达式 510实例348 在Update语句中应用子查询 51110.14
联合
语句Union 512实例349 使用
联合
查询 512实例350 多表
联合
查询 514实例351 对
联合
查询后的结果进行排序 51510.15 内联接查询 517实例352 简单内联接查询 517实例353 复杂内联接查询 518实例354 使用内联接选择一个表与另一个表中行相关的所有行 51910.16 外联接查询 520实例355 left outer join查询 521实例356 right outer join查询 522实例357 使用外联接进行多表
联合
查询 52310.17 利用IN进行查询 525实例358 用IN查询表中的记录信息 525实例359 使用IN引入子查询限定查询范围 52610.18 交叉表查询 527实例360 利用Trasform分析数据 527实例361 利用Trasform动态分析数据 529实例362 静态交叉表(
SQLServer
2000) 531实例363 动态交叉表(
SQLServer
2000) 53310.19 函数查询 535实例364 在查询语句中使用格式化函数 536实例365 在查询语句中使用字符串函数 537实例366 在查询中使用日期函数 53810.20 having语句应用 540实例367 利用having语句过滤分组数据 540实例368 having语句应用在多表查询中 54110.21 视图的应用 543实例369 在
C#
中应用视图 543实例370 获取数据库中的全部用户视图 544实例371 通过视图修改数据 54510.22 存储过程的应用 546实例372
C#
应用存储过程 546实例373 应用存储过程添加数据 547实例374 应用存储过程修改数据 549实例375 应用存储过程
删除
数据 550实例376
C#
应用查询存储过程 551实例377 获取数据库中全部的存储过程 552实例378 加密存储过程 55310.23 触发器的应用 555实例379 Insert触发器的应用 555实例380 Update触发器在系统日志中的应用 556实例381 触发器的嵌套使用 557实例382 获取数据库中的触发器 559第11章 报表与打印技术 56111.1 Windows组件打印 562实例383 打印窗体中的数据 562实例384 图形打印 56411.2 利用报表生成器设计报表 566实例385 利用报表专家设计并显示学生基本信息 566实例386 分组统计报表 569实例387 在水晶报表中添加图表 57111.3 水晶报表基本操作 574实例388 在水晶报表中使用Access数据库 575实例389 在水晶报表中使用SQL Server数据库 576实例390 订货总金额超过10万元显示“恭喜获奖”文字 577实例391 薪资大于或等于1万元使用蓝色字体标记 580实例392 筛选薪资大于2000元的男员工 582实例393 按类别分组统计图书库存 584实例394 按成绩总分降序排序 585实例395 部门销售量占公司总销售量的业绩百分比 58611.4 子报表的使用 588实例396 插入子报表 588实例397 编辑与重新导入子报表 589实例398 根据需要显示子报表 59111.5 调用Office进行打印 593实例399 利用Word打印员工报表 593实例400 利用Excel打印学生信息报表 595第12章 图表技术 59712.1 简单图表 598实例401 绘制坐标系 598实例402 绘制椭圆 599实例403 绘制矩形 601实例404 绘制曲线 60212.2 柱形图表 603实例405 将汇总数据利用图表分析 603实例406 柱形图表分析商品走势 605实例407 对排序数据进行分析 608实例408 利用控件实现柱形图分析 60912.3 折线图表 610实例409 利用图表分析产品销售走势 610实例410 利用图表分析彩票中奖情况 612实例411 多曲线数据分析 614实例412 网站人气指数曲线分析 61712.4 饼型图表 619实例413 利用饼型图分析公司男女比率 619实例414 利用饼型图分析产品市场占有率 620实例415 利用多饼型图分析企业人力资源情况 62112.5 图表技术的应用 623实例416 绘制验证码 623实例417 绘制不规则窗体 625第13章 硬件相关开发技术 62713.1 串口控制 628实例418 通过串口发送数据 628实例419 通过串口关闭对方计算机 63013.2 加密狗 631实例420 密码写入与读出加密狗 631实例421 使用加密狗进行身份验证 63413.3 IC卡应用 635实例422 向IC卡中写入数据 635实例423 读取IC卡中的数据 638实例424 利用IC卡制作考勤程序 63913.4 监控 641实例425 简易视频程序 641实例426 摄像头监控录像 644实例427 超市摄像头定时监控系统 64513.5 语音卡控制 647实例428 语音卡电话呼叫系统 647实例429 客户来电查询系统 652实例430 语音卡实现电话录音 65313.6 手机程序开发 655实例431 利用短信猫收发短信息 655实例432 利用短信远程关闭计算机 659实例433 短信息采集烟草销售数据 660实例434 “春晚”节目评比短信息互动平台 66313.7 其他程序 664实例435 条形码扫描器销售商品 664实例436 利用神龙卡制作练歌房程序 665第14章 网络开发技术 66914.1 计算机设置 670实例437 更改计算机名称 670实例438 通过计算机名获取IP地址 672实例439 通过IP地址获取主机名称 673实例440 修改本机IP地址 674实例441 得到本机MAC地址 677实例442 获得系统打开的端口和状态 678实例443 更改DNS地址 68014.2 远程控制 681实例444 远程控制计算机 682实例445 远程服务控制 68314.3 网络复制文件 686实例446 网络中的文件复制 68614.4 局域网管理 688实例447 在局域网内发送信息 688实例448 获取网络中所有工作组名称 690实例449 列出工作组中所有计算机 692实例450 获取网络中某台计算机的磁盘信息 693实例451 映射网络驱动器 69414.5 网络连接与通信 696实例452 编程实现Ping操作 69614.6 网络聊天室 698实例453 利用
C#
设计聊天程序 698实例454 编写网络聊天室 700第15章 Web编程 70315.1 浏览器应用 704实例455 制作自己的网络浏览软件 704实例456 XML数据库文档的浏览 70815.2 上网控制 710实例457 定时上Internet 710实例458 监测当前网络连接状态 71215.3 邮件管理 713实例459 收取电子邮件 713实例460 SMTP协议发送电子邮件 71715.4 网上信息提取 719实例461 提取并保存网页源码 719实例462 提取网页标题 722第16章 加密、安全与软件注册 72516.1 数据加密与解密 726实例463 数据加密技术 726实例464 文本文件加密与解密 727实例465 利用图片加密文件 73216.2 Access数据库安全 735实例466 如何编程修复Access数据库 735实例467 访问带验证模式的
Sqlserver
2000数据库 73716.3 软件注册与加密 739实例468 利用INI文件对软件进行注册 739实例469 利用注册表设计软件注册程序 741实例470 利用网卡序列号设计软件注册程序 743实例471 根据cpu序列号、磁盘序列号设计软件注册程序 746第17章 数据结构与算法 74917.1 链表的实现 750实例472 单向链表的实现 75017.2 双向链表 755实例473 双向链表 75517.3 堆栈 760实例474 堆栈的实现 76017.4 队列 762实例475 队列的实现 76317.5 树的实现 764实例476 树的实现 76417.6 排序 769实例477 冒泡排序 769实例478 选择排序 770实例479 插入排序 771实例480 希尔排序 77217.7 常见算法的实际应用 773实例481 判断素数的算法 773实例482 加密和解密算法 774实例483 判断身份证是否合法 775实例484 判断IP地址是否合法的算法 777实例485 按要求生成指定位数编号 778实例486 身份证号从15位升到18位算法 779第18章
C#
高级开发 78118.1 Windows服务开发 782实例487 将局域网聊天程序开发成Windows服务 78218.2 Remoting分布式开发 789实例488 运用Remoting实现文件传送 789实例489 大规模数据访问时缓解服务器压力 79618.3 COM+服务开发 802实例490 COM+服务实现银行转账系统 803实例491 COM+服务解决同时访问大量数据并发性 807第19章 实用工具 81319.1 数据库工具 814实例492 自动配置ODBC的程序 814实例493 制作SQL Server提取器 81719.2 个人工具 819实例494 个人通讯录 819实例495 电子名片盒 822实例496 个人日记本 823实例497 个人理财管理 82519.3 实用工具 827实例498 电话区号、邮编管理软件 827实例499 火车时刻查询软件 828实例500 网站网址导航程序 83219.4 其他工具 833实例501 人民币金额转换 834实例502 列举局域网SQL服务器 836实例503 整点报时程序 837实例504 红绿灯程序 839实例505 万年历 841实例506 彩票抽奖机 844实例507 电子相册 846第20章 程序打包 84920.1 最简单的程序打包 850实例508 最简单的程序打包 850实例509 将特定文件安装到指定文件夹中 85220.2 打包注册表信息 854实例510 打包注册表信息 854技术要点对应实例位置 857 第1章 窗体与界面设计 11.1 菜单应用实例 2实例001 带历史信息的菜单 2实例002 菜单动态合并 3实例003 像开始菜单一样漂亮的菜单 4实例004 任务栏托盘菜单 5实例005 可以拉伸的菜单界面 5实例006 菜级联菜单 71.2 工具栏设计 7实例007 带背景的工具栏 7实例008 浮动工具栏 8实例009 带下拉菜单的工具栏 9实例010 具有提示功能的工具栏 91.3 状态栏设计 10实例011 在状态栏中显示检查框 10实例012 带进度条的状态栏 11实例013 状态栏中加入图标 121.4 导航菜单界面 12实例014 OutLook界面 12实例015 带导航菜单的主界面 14实例016 图形化的导航界面 151.5 特色程序界面 17实例017 类QQ的程序界面 17实例018 类似Windows Xp的程序界面 18实例019 以图形按钮显示的界面 20实例020 以树形显示的程序界面 21实例021 动态按钮的窗体界面 221.6 特殊形状的窗体 24实例022 非矩形窗体 24实例023 建立字体形状窗体 25实例024 控件随窗体自动调整 26实例025 带分隔栏的窗体 27实例026 随机更换主界面背景 271.7 多媒体光盘 28实例027 自动启动的多媒体光盘程序 28实例028 为触摸屏程序添加虚拟键盘 291.8 窗体效果 30实例029 半透明渐显窗体 31实例030 窗口颜色的渐变 321.9 窗体动画 33实例031 窗体中的滚动字幕 33实例032 动画显示窗体 34实例033 制作闪烁的窗体 35实例034 直接在窗体上绘图 37实例035 动画形式的程序界面 381.10 标题栏窗体 39实例036 使窗体标题栏文字右对齐 39实例037 没有标题栏但可以改变大小的窗口 391.11 设置窗体位置 40实例038 设置窗体在屏幕中的位置 40实例039 始终在最上面的窗体 411.12 设置窗体大小 42实例040 限制窗体大小 42实例041 获取桌面大小 42实例042 在窗口间移动按钮 43实例043 如何实现Office助手 441.13 窗体控制技术 45实例044 在关闭窗口前加入确认对话框 45实例045 使用任意组件拖动窗体 46实例046 修改提示字体及颜色 471.14 其他技术 48实例047 如何为MDI类型窗体设置背景图片 48实例048 向提示框中添加图标 49第2章 控件应用 512.1 TextBox控件应用 52实例049 只允许输入数字的TextBox控件 52实例050 限制用户名称长度及设置密码文本 54实例051 自动
删除
非法字符 55实例052 为TextBox控件添加列表选择框 572.2 Button控件应用 58实例053 在Button按钮中显示图标 582.3 ComboBox控件应用 59实例054 将数据表中的字段添加到ComboBox控件 59实例055 带查询功能的ComboBox控件 612.4 RichTextBox控件应用 63实例056 利用RichTextBox控件实现文档管理功能 63实例057 利用RichTextBox控件实现文字定位与标识 65实例058 用RichTextBox控件显示图文数据 672.5 ListBox控件应用 68实例059 在ListBox控件间交换数据 68实例060 将数据库数据添加到组合框中 70实例061 借助绑定控件实现数据选择录入 71实例062 ListBox拒绝添加重复信息 722.6 选择类控件应用 73实例063 利用选择控件实现权限设置 74实例064 利用选择控件实现复杂查询 762.7 ListView控件应用 78实例065 ListView列表拒绝添加重复信息 78实例066 将数据库数据添加到ListView控件 80实例067 用ListView控件制作导航界面 81实例068 在ListView控件中对数据排序或统计 83实例069 在ListView控件中绘制底纹 84实例070 在列表视图中拖动视图项 85实例071 用ListView控件选取整行数据 88实例072 用ListView控件开发登录界面 892.8 TreeView控件应用 91实例073 将数据库数据显示到树视图中 91实例074 用TreeView控件制作导航界面 93实例075 用TreeView控件遍历磁盘目录 94实例076 TreeView控件在数据库中的应用 96实例077 带复选框的树状菜单 982.9 其他控件典型应用 100实例078 TrackBar的简单应用 100实例079 SplitContainer的应用 102实例080 MaskedTextBox控件的简单应用 103实例081 制作日历计划任务 105实例082 ImageAnimator类显示动画图片 108实例083 QQ头像列表 1102.10 控件技术 112实例084 程序运行时智能增减控件 112实例085 控制焦点移动 114实例086 动态创建控件 115实例087 在Button按钮上绘图 1162.11 焦点变换与输入控制 117实例088 按回车键焦点在控件中移动的录入窗口 117实例089 程序运行时拖动控件 119实例090 控件得到焦点时变色 120实例091 控件的输入限制 1212.12 特殊控件 122实例092 为控件制作立体效果 122实例093 获取控件名称和内容 124第3章 组件应用 1273.1 BackgroundWorker组件 128实例094 BackgroundWorker组件执行异步操作 1283.2 ErrorProvider组件 130实例095 使用ErrorProvider组件验证文本框输入 130实例096 利用ErrorProvider组件查看数据集中的错误 1323.3 EventLog组件 134实例097 使用EventLog组件读写Windows系统事件日志 134实例098 使用EventLog组件保存Windows系统日志 136实例099 使用EventLog组件向本机现有日志中添加条目 1383.4 FileSystemWatcher组件 140实例100 使用FileSystemWatcher组件监视系统日志文件是否被更改 1403.5 HelpProvider组件 142实例101 使用HelpProvider组件调用帮助文件 1423.6 Process组件 143实例102 使用Process组件访问本地进程 1433.7 Timer组件 145实例103 使用Timer组件制作计时器 145实例104 使用Timer组件显示当前系统时间 150实例105 使用Timer组件制作左右飘动的窗体 151实例106 使用Timer组件实现奥运倒计时 1523.8 ServiceController组件 154实例107 使用ServiceController组件控制计算机的服务 1543.9 ImageList组件 156实例108 使用ImageList组件制作动画图片 1563.10 DirectoryEntry组件 157实例109 使用DirectoryEntry组件建立虚拟目录 158第4章 图形技术 1614.1 绘制图形 162实例110 基本图形绘制 162实例111 在图片中写入文字 163实例112 局部图片的复制 165实例113 波形图的绘制 1664.2 图形转换 168实例114 BMP转换成JPG格式 168实例115 JPG转换成BMP格式 170实例116 位图转化为WMF 171实例117 Ico文件转化为位图 172实例118 图片批量转换工具 1734.3 图像预览 175实例119 局部图像放大 175实例120 浏览大图片 177实例121 剪切图片 178实例122 图像旋转 181实例123 鼠标拖拽图像 1824.4 图形缩放与变换 183实例124 如何放大和缩小图像 183实例125 如何旋转JPG图像 184实例126 如何实现图形翻转 1854.5 图像效果 186实例127 百叶窗效果显示图像 186实例128 推拉效果显示图像 187实例129 水平交错效果显示图像 188实例130 垂直交错效果显示图像 190实例131 图像纹理效果 191实例132 图像浮雕效果 193实例133 积木效果 194实例134 马赛克效果显示图像 1954.6 图像字体 197实例135 旋转的文字 197实例136 当前系统字体列表 198实例137 空心文字 199实例138 如何在图片上平滑移动文字 2014.7 图像动画 202实例139 动画背景窗体 202实例140 随鼠标移动的图像 203实例141 十字光标定位 204实例142 抓取鼠标形状 2064.8 图像识别 207实例143 查看图片的像素 207实例144 获取指定点的RGB值 2074.9 图像工具 208实例145 获取图片类型 208实例146 简单画图程序 209实例147 看图工具 213实例148 文字保存为图片 2154.10 图像应用 215实例149 随机更换壁纸程序 216实例150 屏幕保护 217实例151 模拟石英钟 219实例152 生肖速查 221第5章 多媒体技术 2255.1 CD、VCD播放 226实例153 播放指定的avi-mid-wav文件 226实例154 获取多媒体详细信息列表 2275.2 MP3、WAV播放 228实例155 带记忆功能的MP3播放器 228实例156 自动播放的MP3播放器 231实例157 学校体操定时音乐播放 2335.3 动画播放 234实例158 播放Flash动画 234实例159 制作AVI播放器 236实例160 播放Gif动画 237实例161 利用Image制作小动画 2395.4 媒体控制 240实例162 检测是否安装声卡 240实例163 打开和关闭CDROM 241实例164 控制PC喇叭发声 2425.5 多媒体应用 243实例165 开机祝福程序 243实例166 制作家庭影集 245实例167 产品电子报价 246实例168 产品滚动展示程序 248实例169 将图片资源添加到EXE里 2495.6 屏幕保护相关程序 250实例170 电子相册屏幕保护程序 250实例171 歌曲播放屏幕保护程序 251第6章 文件系统 2536.1 创建和
删除
文件 254实例172 创建和
删除
文件夹 254实例173 建立临时文件 255实例174 根据日期动态建立文件 256实例175 清空回收站 2576.2 查找文件 258实例176 搜索文件 259实例177 检查文件是否存在 260实例178 提取指定文件夹目录 2616.3 修改文件 261实例179 更改文件名称 262实例180 修改文件属性 262实例181 修改文件及目录的名字 2646.4 文件目录 265实例182 获得临时文件目录 265实例183 获取应用程序所在目录 266实例184 得到系统当前目录 266实例185 在程序中改变当前路径 2676.5 复制文件 268实例186 移动正在使用的文件 268实例187 批量复制文件 2696.6 指定类型的文件操作 270实例188 文本文件的操作 270实例189 简单的文件加密解密 2716.7 其他 273实例190 获取窗口文本 273实例191 判断文件是否正在被使用 274实例192 在程序中调用.HLP文件 275实例193
C#
中实现文件拖放 276实例194 文件比较 276第7章 操作系统与Windows相关程序 2797.1 启动相关 280实例195 进入Windows前发出警告 280实例196 实现注销、关闭和重启计算机 2817.2 获得磁盘属性 284实例197 获得硬盘序列号 284实例198 获取映射驱动器路径 286实例199 判断驱动器类型 2877.3 磁盘相关设置 288实例200 取消磁盘共享 288实例201 检查驱动器容量 289实例202 检测磁盘是否准备好 290实例203 图表显示磁盘容量 291实例204 格式化磁盘 2937.4 系统控制 294实例205 怎样隐藏鼠标 294实例206 允许和禁止用户关机 295实例207 锁定计算机 2967.5 系统设置 297实例208 设置系统输入法 297实例209 设置桌面颜色 298实例210 鼠标交换左右键 2997.6 系统监控 299实例211 检测系统启动模式 300实例212 内存使用状态监控 301实例213 监视剪贴板内容 3027.7 系统软件信息 303实例214 获取用户名 303实例215 获取系统目录 305实例216 注册系统热键 306实例217 获取和修改BIOS计算机名 3077.8 鼠标操作 308实例218 动画鼠标 309实例219 限制鼠标活动区域 310实例220 获取鼠标在任意点的位置 311实例221 判断键盘按下的键值 3117.9 程序控制 312实例222 打开控制面板中的程序 313实例223 添加程序托盘 314实例224 不出现在任务栏上的程序 314实例225 怎样调用外部的Exe文件 315实例226 关闭外部已开启的程序 3167.10 程序运行 317实例227 防止程序多次运行 317实例228 开机后程序自动运行 319实例229 获取任务栏尺寸大小 320实例230 改变系统提示信息 321实例231 获取系统环境变量 322实例232 启动屏幕保护 3237.11 系统隐藏 324实例233 隐藏、显示任务栏 324实例234 隐藏、显示开始按钮 325实例235 查看当前系统版本 326实例236 使桌面图标文字透明 328实例237 检索系统中正在运行的任务 329实例238 列出系统中的打印机 3307.12 其他 332实例239 两种信息发送方式 332实例240 功能快捷键 336第8章 注册表 3398.1 操作注册表 340实例241 怎样存取注册表信息 340实例242 注册表保存注册信息 341实例243 设置“显示 属性”窗体 342实例244 列出注册表指定项下全部键值 3438.2 系 统 设 置 344实例245 隐藏、显示桌面图标 345实例246 隐藏驱动器 345实例247 禁用运行注册表 3478.3 IE浏览器设置 348实例248 修改IE浏览器标题栏内容 348实例249 隐藏IE浏览器的右键关联菜单 349实例250 设置IE浏览器的默认主页 350实例251 禁止修改IE浏览器主页 3518.4 应用软件设置 352实例252 设置Word 2000文档及图片的保存路径 352实例253 限制软件使用次数 353第9章 数据库技术 3559.1 连接Access数据库 356实例254 连接Access数据库 356实例255 连接加密的Access数据库 357实例256 自动识别Access 2000数据库路径 358实例257 连接网络上共享的Access 2000数据库 3609.2 连接SQL Server数据库 361实例258 使用ODBC DSN连接SQL Server数据库 361实例259 使用ODBC非DSN连接SQL Server数据库 364实例260 使用OLE DB连接SQL Server数据库 365实例261 建立SQL Server数据库连接 3669.3 连接其他数据库 367实例262 连接Excel 367实例263 连接Oracle数据库 3689.4 数据库结构的读取与修改 369实例264 读取SQL Server数据库结构 369实例265 修改SQL Server数据库结构 3729.5 数据录入 374实例266 利用数据绑定控件录入数据 374实例267 使用ADO.NET对象录入数据 376实例268 利用SQL语句录入数据 379实例269 利用存储过程录入数据 3809.6 图片存取技术 383实例270 使用存取文件名的方法存取图片 383实例271 使用ADO.NET对象向SQL Server数据库存入图片 3849.7 数据修改 387实例272 利用数据绑定控件修改数据 387实例273 利用数据对象修改数据 390实例274 利用SQL语句修改数据 391实例275 利用存储过程修改数据 3939.8 数据保存前判断 395实例276 判断输入数据是否符合要求 395实例277 通过存储过程实现自动编号 398
9.9
数据
删除
401实例278
删除
表格中指定的记录 401实例279 利用SQL语句
删除
数据 4029.10 数据记录 403实例280 分页显示信息 403实例281 移动记录 4049.11 数据维护 406实例282 在
C#
中分离SQL Server数据库 406实例283 在
C#
中附加SQL Server数据库 407实例284 在
C#
中附加单文件SQL Server数据库 4099.12 数据备份恢复 410实例285 备份SQL Server数据库 410实例286 还原SQL Server数据库 4139.13 管理系统开发相关 415实例287 开启SQL Server数据库 415实例288 断开SQL Server数据库与其他应用程序的连接 417实例289 带图像列表的系统登录程序 419实例290 利用SQL语句执行外围命令 420实例291 系统初始化 421第10章 SQL查询相关技术 42510.1 SELECT子句 426实例292 查询特定列数据 426实例293 使用列别名 428实例294 在列上加入计算 430实例295 使用函数设置条件 43110.2 查询常量 432实例296 查询数字 433实例297 查询字符串 434实例298 查询日期数据 436实例299 查询逻辑型数据 437实例300 查询空数据 43810.3 查询变量 440实例301 利用变量查询字符串数据 440实例302 利用变量查询数值型数据 441实例303 利用变量查询日期型数据 44210.4 模式查询 444实例304 利用“_”通配符进行查询 444实例305 利用“%”通配符进行查询 445实例306 利用“[]”通配符进行查询 446实例307 利用“[^]”通配符进行查询 448实例308 复杂的模式查询 44910.5 TOP和PERCENT限制查询结果 450实例309 查询前10名数据 450实例310 取出数据统计结果的前10名数据 451实例311 查询销售量占前50%的图书信息 453实例312 查询库存数量占后20%的图书信息 45410.6 周期、日期查询 455实例313 查询指定日期的数据 455实例314 查询指定时间段的数据 457实例315 按月查询数据 45810.7 比较、逻辑、重复查询 460实例316 查询数据大于指定条件的数据 460实例317 NOT与谓词进行组合条件的查询 461实例318 查询时不显示重复记录 463实例319 列出数据中的重复记录和记录条数 46510.8 在查询中使用OR和AND运算符 466实例320 利用OR运算符进行查询 466实例321 利用AND运算符进行查询 467实例322 同时利用OR、AND运算符进行查询 46910.9 排序、分组统计 471实例323 数据分组统计(单列) 471实例324 在分组查询中使用ALL关键字 473实例325 在分组查询中使用CUBE运算符 475实例326 在分组查询中使用ROLLUP 477实例327 对数据进行降序查询 479实例328 对数据进行多条件排序 480实例329 对统计结果进行排序 482实例330 按仓库分组统计图书库存(多列) 483实例331 多表分组统计 484实例332 使用COMPUTE 485实例333 使用COMPUTE BY 48710.10 聚合函数 488实例334 利用聚合函数SUM对销售额进行汇总 488实例335 利用聚合函数AVG求某班学生的平均年龄 490实例336 利用聚合函数MIN求销售额、利润最少的商品 492实例337 利用聚合函数MAX求月销售额完成最多的员工 493实例338 利用聚合函数COUNT求日销售额大于某值的商品数 495实例339 利用聚合函数First或Last求数据表中第一条或最后一条记录 49610.11 多表查询(连接查询) 498实例340 利用FROM子句进行多表查询 498实例341 使用表别名 499实例342 合并多个结果集 50110.12 嵌套查询 503实例343 简单嵌套查询 503实例344 复杂嵌套查询 504实例345 嵌套查询在查询统计中的应用 50610.13 子查询 508实例346 用子查询做派生的表 508实例347 用子查询作表达式 510实例348 在Update语句中应用子查询 51110.14
联合
语句Union 512实例349 使用
联合
查询 512实例350 多表
联合
查询 514实例351 对
联合
查询后的结果进行排序 51510.15 内联接查询 517实例352 简单内联接查询 517实例353 复杂内联接查询 518实例354 使用内联接选择一个表与另一个表中行相关的所有行 51910.16 外联接查询 520实例355 left outer join查询 521实例356 right outer join查询 522实例357 使用外联接进行多表
联合
查询 52310.17 利用IN进行查询 525实例358 用IN查询表中的记录信息 525实例359 使用IN引入子查询限定查询范围 52610.18 交叉表查询 527实例360 利用Trasform分析数据 527实例361 利用Trasform动态分析数据 529实例362 静态交叉表(
SQLServer
2000) 531实例363 动态交叉表(
SQLServer
2000) 53310.19 函数查询 535实例364 在查询语句中使用格式化函数 536实例365 在查询语句中使用字符串函数 537实例366 在查询中使用日期函数 53810.20 having语句应用 540实例367 利用having语句过滤分组数据 540实例368 having语句应用在多表查询中 54110.21 视图的应用 543实例369 在
C#
中应用视图 543实例370 获取数据库中的全部用户视图 544实例371 通过视图修改数据 54510.22 存储过程的应用 546实例372
C#
应用存储过程 546实例373 应用存储过程添加数据 547实例374 应用存储过程修改数据 549实例375 应用存储过程
删除
数据 550实例376
C#
应用查询存储过程 551实例377 获取数据库中全部的存储过程 552实例378 加密存储过程 55310.23 触发器的应用 555实例379 Insert触发器的应用 555实例380 Update触发器在系统日志中的应用 556实例381 触发器的嵌套使用 557实例382 获取数据库中的触发器 559第11章 报表与打印技术 56111.1 Windows组件打印 562实例383 打印窗体中的数据 562实例384 图形打印 56411.2 利用报表生成器设计报表 566实例385 利用报表专家设计并显示学生基本信息 566实例386 分组统计报表 569实例387 在水晶报表中添加图表 57111.3 水晶报表基本操作 574实例388 在水晶报表中使用Access数据库 575实例389 在水晶报表中使用SQL Server数据库 576实例390 订货总金额超过10万元显示“恭喜获奖”文字 577实例391 薪资大于或等于1万元使用蓝色字体标记 580实例392 筛选薪资大于2000元的男员工 582实例393 按类别分组统计图书库存 584实例394 按成绩总分降序排序 585实例395 部门销售量占公司总销售量的业绩百分比 58611.4 子报表的使用 588实例396 插入子报表 588实例397 编辑与重新导入子报表 589实例398 根据需要显示子报表 59111.5 调用Office进行打印 593实例399 利用Word打印员工报表 593实例400 利用Excel打印学生信息报表
付加劲的课程社区_NO_1
1
社区成员
244
社区内容
发帖
与我相关
我的任务
付加劲的课程社区_NO_1
上位机行业的10年老兵,助力工业自动化发展
复制链接
扫一扫
分享
社区描述
上位机行业的10年老兵,助力工业自动化发展
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章