4-2 ADO.NET-查询和检索数据11

简介:

4-3-3   DataGridView控件与存储过程

1.存储过程在软件项目开发中的价值

1)定义
前面章节中提到过,在应用 Command 对象时,其命令可以是存储过程名称。那么,什么是存储过程?为什么要使用存储过程?
首先,看看存储过程的定义。将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,被存储起来的就是存储过程。那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用 execute ,即可自动完成命令。
2)存储过程的优缺点:
u 存储过程的主要优点体现在:   
n 减少网络传输,节约时间 
n 速度快 
n 出错的概率小 
n 可利用服务器的一些特殊的资源 
u 存储过程的主要缺点体现在:   
n 交互性差 
n 不够灵活 
n 商业逻辑层与数据库在一起,不易移植
存储过程主要致命的缺点就是:可能如果要更换数据库(比如:从 sql   server oracle )的话,你的存储过程就都要重写了。所以它过分依赖数据库端,假如你要做一个工程,是可以的,但是如果你要做一个产品,或者以后可能还会用到这个工程的代码的话,建议少使用。所以任何一种开发方法总有优缺点,不要过分依赖它。
在应用程序中,通常会大量使用存储过程,这是因为:
第一,维护方便:
如果你把所需要执行的操作代码写在程序当中,那么要做一些小修改,也要对程序做修改并重新编译,对于用户来讲,这个时候就需要对程序加以深度测试(你说只修改了一点点,但是用户不会为你的一句话而冒风险的),存储过程相对来讲就简单得多,毕竟逻辑上分离出来了,即使要进行审核,成本也远比程序要低得多;
第二,重用性:
一个设计好的存储过程,任何符合其输入和输出的程序都可以共用,同样也改善了维护工作,如果有10个程序要用到这个存储过程,那要做些修改,自然修改一个存储过程所花费的成本比程序要低得多;
第三,分工的明确化:
存储过程如果设计得当,就可以通过一个中间的适配器( Adapter )来调用,如此在将来进行数据库的迁移等,就可以把相应的工作交给具体的熟悉相关数据库等业务的人员,而不是所有的开发人员都要进行了解。就好比 MSSQL / Oracle / DB2 类似的,如果数据库操作脚本写在程序当中,那么迁移的工作量将会是所有可能的程序。如果是通过存储过程,那就可以交给相应的 DBA 等来完成;
第四,预编译提高效率:
存储过程的预编译,可能性使得语句的执行更优化,特别是对于类似Oracle等具备某些高级优化能力的,那么包括其既定的执行计划等可以带来相当的性能提升;
第五,对于需要多次访问数据的复杂操作:
如果写在程序当中,那么就需要不断的或者大量的提取数据库中的数据到程序中进行运算,而如果是使用存储过程,那么就减少了应用程序与数据库的交互次数,如此的消耗明显要低得多。

2.案例学习:DataGridView与存储过程

本实验操作较为复杂,需要提前准备的内容包括:
n 数据库 ——  Grade _ Sys 数据库
n 建立类 ——  BuessinessLayer . cs (业务逻辑文件)
n 建立类 ——  DataBaseLayer . cs (数据库操作文件)
通过本案例,您将学习到:
n 动态生成 DataGridView 列表信息内容
n C# 开发系统分层思想
n 存储过程参数的输入与返回值的获取
n 复杂存储过程的开发设计
用户界面如图464所示:
4-64 DataGridView与存储过程应用程序界面图
u 实验步骤(1):
VS.NET 2005 中新建一个名为示例7的基于 Windows 的项目。将默认窗体重命名为 form14.cs
u 实验步骤(2):
从工具箱之中拖拽三个 GroupBox 控件到 From 窗体, Text 属性分别设置为“教师个人信息”、“已阅试卷检索”、“数据显示区”;向第一个 GroupBox 控件拖拽五个Lable控件, Text 属性分别设置为“编号:”、“姓名:”、“学位:”、“单位:”、“职称:”;再向这个 GroupBox 控件拖拽五个 Lable 控件;向第二个GroupBox控件拖拽二个 ComboBox 控件;还要向第二个 GroupBox 控件拖拽上 Button 控件, Text 属性分别设置为“按授课学期查询”、“按授课班级查询”、“查询全部”;向第三个 GroupBox 控件拖拽一个 DataGridView 控件, olumnHeadersHeightSizeMode 属性设置为“AutoSize”, Dock 属性设置为“ Fill ;为 DataGridView 控件添加列“编号”、“任课班级”、“合作院校”、“课程名称”、“课时”、“授课学期“、“人数”、“已阅”、“未阅”、“成绩单操作”,参加表432所示:
4-32 DataGridView控件编辑列项表
列名称
列类型
页眉文本
可见性
编号
DataGridViewTextBoxColumn
编号
True
任课班级
DataGridViewTextBoxColumn
任课班级
True
合作院校
DataGridViewTextBoxColumn
合作院校
True
课程名称
DataGridViewTextBoxColumn
课程名称
True
课时
DataGridViewTextBoxColumn
课时
True
授课学期
DataGridViewTextBoxColumn
授课学期
True
人数
DataGridViewTextBoxColumn
人数
True
已阅
DataGridViewTextBoxColumn
已阅
True
未阅
DataGridViewTextBoxColumn
未阅
True
成绩单操作
DataGridViewButtonColumn
成绩单操作
True
u 实验步骤(3):
数据库的设计参见图465
4-65 数据库设计图
数据库为Grade_Sys,用了13个表,具体字段设计情况请参见图492。另外编写了24个存储过程。数据库环境是 SQL   Server  2005
u 实验步骤(4):
鼠标右击项目,在弹出的菜单中选择“添加”、“新建项”,在弹出的“添加新项”窗体中选择“代码文件”,名称改为“ BuessinessLayer . cs ,点击“添加”按钮,完成添加。
BuessinessLayer . cs 文件中,编写如下代码:
(代码待续)



本文转自 qianshao 51CTO博客,原文链接:http://blog.51cto.com/qianshao/216110,如需转载请自行联系原作者

目录
相关文章
|
7月前
|
开发框架 JavaScript .NET
asp.net中条件查询+分页
asp.net中条件查询+分页
|
2月前
|
SQL XML 关系型数据库
入门指南:利用NHibernate简化.NET应用程序的数据访问
【10月更文挑战第13天】NHibernate是一个面向.NET的开源对象关系映射(ORM)工具,它提供了从数据库表到应用程序中的对象之间的映射。通过使用NHibernate,开发者可以专注于业务逻辑和领域模型的设计,而无需直接编写复杂的SQL语句来处理数据持久化问题。NHibernate支持多种数据库,并且具有高度的灵活性和可扩展性。
50 2
|
4月前
|
开发框架 .NET 数据库连接
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
100 1
|
5月前
|
开发框架 JSON 前端开发
利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
|
4月前
|
开发框架 前端开发 算法
分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法
分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法
|
4月前
|
SQL Oracle 关系型数据库
.NET 开源快捷的数据库文档查询和生成工具
【8月更文挑战第1天】推荐几款.NET开源数据库文档工具:1. DBDocumentor,支持多类型数据库,快速生成详尽文档;2. SqlDoc,界面简洁,自定义内容与格式;3. DBInfo,强大查询功能,支持多种导出格式。这些工具有效提升文档管理效率与质量。
|
5月前
|
C#
效率提升利器:一个在线的.NET源码查询网站
效率提升利器:一个在线的.NET源码查询网站
|
7月前
|
存储 测试技术 计算机视觉
高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据
高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据
|
1天前
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统