zoukankan      html  css  js  c++  java
  • 使用存储过程(22)

    存储过程是数据库开发人员为了使用某一特定的数据库而编写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>");//页面错误提示
               }
           }
    
          
        }
    }
    

  • 相关阅读:
    人工智能芯片支持超低功耗器件的推理
    新十年嵌入式音频的五大趋势
    面向汽车应用的硬件推理芯片
    MySQL优化技巧总结
    JAVA集合类汇总
    为什么HashMap初始大小为16,为什么加载因子大小为0.75,这两个值的选取有什么特点?
    ztree 树状图——例
    amazeUI表单提交验证--input框required
    bigcolorpicker 颜色拾取器插件——例
    博客园-去掉皮肤
  • 原文地址:https://www.cnblogs.com/shenzhoulong/p/1742040.html
Copyright © 2011-2022 走看看