存储过程是数据库开发人员为了使用某一特定的数据库而编写SQL语句集。其他的web应用程序可以调用这些存储过程来访问和操作数据库中的数据,如图:

web应用程序可以直接访问数据库,也可以通过存储过程来调用数据库,使用存储过程访问数据库与直接访问数据库,相比有很多优势比如:

  • 假如有一套复杂的SQL语句需要在多个aspx文件中,可以把他们放在一个存储过程,然后执行该存储过程。这样可以减小aspx文件的大小,同时可以保证每一页执行的SQL语句相同;当执行一个SQL语句时,服务器要先对处理中的语句编译,这不但需要时间处理,还要花费服务器资源,相比较而言,在存储过程执行第一次后,就不需要在进行编译了,通过存储过程可以很好的跨过编译这一步,更快的执行的SQL语句集。从一个动态网页中执行一个存储过程比执行一个SQL语句的集合更有效。
  • 可以对存储过程输入输出值,这意味着存储过程非常灵活,相同的存储过程可以根据不同输入值返回不同的信息。
  • 当向数据库服务器传递一个SQL语句集合时,必须传递其中的 诶一个独立的预计,当执行存储过程时,相反的,仅需传递一个简单的预计,很明显的,可以通过执行存储过程,来减少在网络上的拥塞。
  • 在存储过程中,可以封装一些对数据库的数据操作,从而简化组件或 应用程序中有关数据操作 的复杂性。
  • 通过使用存储过程可以方便程序的升级和业务逻辑的修改。在存储过程中封装的数据可以很方便的修改,不需要重新更改源代码。
  • 可以提高应用程序的安全性,可以再数据库端授权用户使用存储过程,而拒绝用户直接访问数据库,这样用户可以通过存储过程来访问数据,从而防止用户直接操作数据表。

从存储过程的优势不难看出,存储过程可以提高访问数据的效率,安全性,以及对数据库的保护性比较好,存储过程按功能可以分为“返回记录 的存储过程”“返回值的存储过程”“行为存储过程”

返回记录的存储过程用于查找指定的记录,并且排序和过滤这些记录,然后将查找、排序和过滤后的结果返回到dataset对象,或者数据列表等控件中,此类存储过程用SQL的select语句构成。

创建存储过程:

create procedure index_student
as
select * from course
where name='数据库'
order by id

c#后台代码:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;namespace 返回记录
{public partial class _Default : System.Web.UI.Page{override protected void OnInit( EventArgs e){InitializeComponent();base.OnInit(e);}private void InitializeComponent(){this.Button1.Click+=new EventHandler(Button1_Click);}protected void Button1_Click(object sender, System.EventArgs e){string connectionsting = "Data Source=神舟龙-PC\\SQLEXPRESS;Initial Catalog=student;Integrated Security=True;";SqlConnection conn = new SqlConnection(connectionsting );SqlCommand comm = new SqlCommand("index_student", conn);//将存储过程名称index_student作为构造函数的一个参数comm.CommandType = CommandType.StoredProcedure;//声明comm对象的CommandType为枚举值CommandType.StoredProcedure,表示执行存储过程SqlDataAdapter da = new SqlDataAdapter(comm);DataSet ds = new DataSet();try{conn.Open();da.Fill(ds, "course");this.DataGrid1.DataSource = ds.Tables["course"].DefaultView;this.DataGrid1.DataBind();da.Dispose();}catch{this.RegisterStartupScript("message","<script>alert('操作失败!')</script>");//页面错误提示}}}
}

转载于:https://www.cnblogs.com/shenzhoulong/archive/2010/05/23/1742040.html

使用存储过程(22)相关推荐

  1. 第七节:EF Core调用SQL语句和存储过程

    一. 查询类(FromSql) 1.说明 A. SQL查询必须返回实体的所有属性字段. B. 结果集中的列名必须与属性映射到的列名相匹配. C. SQL查询不能包含关联数据 D. 除Select以为的 ...

  2. Dapper在.Net中的使用(二)

    配置和通用方法 1.获取数据库配置和配置数据连接 1 /// <summary> 2 /// 打开Oracle链接 3 /// </summary> 4 /// <ret ...

  3. 最全面的Java面试题-----是你更好的掌握java知识

    最全面的Java面试题-----是你更好的掌握java知识 目录 l     概念题--- 1 一.        JAVA基础--- 1 1)      面向对象的特征--- 1 2)      什 ...

  4. SQlServer数据库基础

    目录 SQlServer数据库基础... 1 一.       创建语句... 3 (1)创建数据库... 3 (2)创建表格... 3 二.删除语句... 5 (1)删除数据库... 5 (2)删除 ...

  5. oracle结构体转为字符,CSS_细化解析:Oracle与SQL过程之间的转化,这两天写数据库升级脚本,发 - phpStudy...

    细化解析:Oracle与SQL过程之间的转化 这两天写数据库升级脚本,发现MSSQL和Oracle之间的转化还是比较容易的. 以下面两个过程为例.两者的功能相似. 1.MSSQL脚本 1 /** 更改 ...

  6. 手写MySQL常用语法

    文章目录 01 准备工作 02 了解你的数据库 03 检索数据 04 对数据排序 05 使用where进行数据筛选 06 组合where子句 07 使用通配符 08 正则表达式 09 计算字段 10 ...

  7. java调用ORACLE 存储过程返回值22

    存储过程代码如下:     create   or   replace   package   mysp   is         type   refcursor   is   ref   curs ...

  8. hql调用mysql存储过程_hibernate调用mysql存储过程

    在mysql中创建两个存储过程,如下: 1.根据id查找某条数据: 1 CREATE PROCEDURE `findEmpById`(IN id INTEGER(11))2 begin3      s ...

  9. SER SERVER存储过程

    Transact-SQL中的存储过程,非常类似于C#语言中的方法,可以重复调用.当存储过程执行一次后,可以将语句存储到缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. 一 ...

最新文章

  1. Bigtable:结构化数据的分布式存储系统
  2. 即使达到5级自动驾驶阶段,自动驾驶“卡车”也不可能完全“无人”
  3. AI公开课:19.04.10颜水成—360副总裁《人工智能:观察与实践》课堂笔记以及个人感悟—191017再次更新
  4. mysql查看优化后的语句_Mysql查看优化后的SQL 语句
  5. 前端趋势榜:上周最 yyds 的 10 大前端项目 - 211101
  6. Java 注解 Annotation
  7. python中requests的常用方法_Python爬虫简介(2)——请求库的常用方法及使用,python,入门,二,requests,常见,和,库中,文官,网...
  8. 画面设置_LOL手游设置界面翻译:基本设置/画面/音效/功能与快捷语音
  9. 阿里云服务器域名解析
  10. android中的多渠道打包,Android 多渠道打包简析
  11. 6.Swoole WebSocket
  12. MySQL练习题 (练习表+题目+答案)
  13. nodeJS实现简单网页爬虫功能
  14. 科学绘图软件 Prism 安装教程
  15. 阿里内部Redis宝典遭外泄极致经典:源码+实战+理论
  16. CDN进行防御的两大原理
  17. js + leetcode刷题:No.914 卡牌分组
  18. 北上深广领军,成都名列第五,武汉跌出前十,中国城市综合发展指标最新排名公布...
  19. VeryCD下载方法
  20. airpods pro是按压还是触摸_山寨版AirPods Pro拆解:真是一绝!

热门文章

  1. celery无密码连接redis与带密码连接redis
  2. saleor的生产环境部署-失败记录
  3. Exception in thread main java.lang.NullPointerException一例解决
  4. sublime突然中文乱码
  5. Rstudio修改背景颜色和源
  6. 云主机上mysql密码重置
  7. 深度学习(二十五)——Attention(2)
  8. 机器学习(九)——EM算法
  9. Eclipse中clean项目的作用
  10. 用Scrutor来简化ASP.NET Core的DI注册