• 业务逻辑>数据层>SqlDataSource>sql的输入输出参数>存储过程 输出参数


    业务逻辑>数据层>SqlDataSource>sql的输入输出参数:
    输入参数包括,控件参数,窗体参数,用户设置文件参数,查询字符串参数,会话参数,Cookie参数,后台代码声明参数。

    输出参数包括,存储过程声明的输出参数,sql语句声明的输出参数。

    参数类型。

    业务逻辑>数据层>SqlDataSource>sql的输入输出参数>存储过程 输出参数:

    改编自《ASP.NET3.5 开发范例精讲精析 基于c#》

    首先是表结构

    存储过程的代码

     1 ALTER PROCEDURE dbo.Demo10simple
     2     /*
     3     (
     4     @parameter1 int = 5,
     5     @parameter2 datatype OUTPUT
     6     )
     7     */
     8     @average money output,
     9     @maximum money output,
    10     @minimum money output
    11 AS
    12     /* SET NOCOUNT ON */
    13     select @average = avg(当前薪资),@maximum=max(当前薪资),@minimum=min(当前薪资) 
    14     from 章立民研究室
    15     where 部门='生产制造部';
    16     
    17     select 员工号码,姓名,地址,当前薪资,部门
    18     from 章立民研究室
    19     where 部门='生产制造部'
    20     
    21     --存储过程的返回值
    22     RETURN @@rowcount;
    23 

    你看,@average,@maximum,@minimum 声明为输出参数,然后把sql函数对字段的操作结果赋予这些输出参数。

    这里还有个特殊的输出参数,就是存储过程的返回值。

    网页前台代码:

     1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Demo10simple.aspx.cs" Inherits="Demo10simple" %>
     2 
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     4 
     5 <html xmlns="http://www.w3.org/1999/xhtml">
     6 <head runat="server">
     7     <title>存储过程的输出参数与返回值</title>
     8 </head>
     9 <body>
    10     <form id="form1" runat="server">
    11     <div>
    12     
    13         <asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1">
    14         </asp:GridView>
    15         <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    16             ConnectionString="<%$ ConnectionStrings:ChtNorthwind %>" 
    17             SelectCommand="Demo10simple" SelectCommandType="StoredProcedure" 
    18             onselected="SqlDataSource1_Selected">
    19             
    20             <SelectParameters>
    21             <asp:Parameter Direction="Output" Name="average" Type="Decimal" />
    22             <asp:Parameter Direction="Output" Name="maximum" Type="Decimal" />
    23             <asp:Parameter Direction="Output" Name="minimum" Type="Decimal" />
    24             <asp:Parameter Direction="ReturnValue" Name="ret" Type="Int32" />
    25             </SelectParameters>
    26             
    27         </asp:SqlDataSource>
    28     
    29         <br />
    30         <asp:TextBox ID="TextBox1" runat="server" Width="380px"></asp:TextBox>
    31         <br />
    32         <asp:TextBox ID="TextBox2" runat="server" Width="380px"></asp:TextBox>
    33         <br />
    34         <asp:TextBox ID="TextBox3" runat="server" Width="380px"></asp:TextBox>
    35         <br />
    36         <asp:TextBox ID="TextBox4" runat="server" Width="380px"></asp:TextBox>
    37     </div>
    38     </form>
    39 </body>
    40 </html>
    41 

    SqlDataSource 的查询方法设置成存储过程,声明几个参数为输出参数,名字对应存储过程的输出参数,并且设置好类型。

    后台代码:

     1 using System;
     2 using System.Collections;
     3 using System.Configuration;
     4 using System.Data;
     5 using System.Linq;
     6 using System.Web;
     7 using System.Web.Security;
     8 using System.Web.UI;
     9 using System.Web.UI.HtmlControls;
    10 using System.Web.UI.WebControls;
    11 using System.Web.UI.WebControls.WebParts;
    12 using System.Xml.Linq;
    13 using System.Data.SqlClient;
    14 
    15 public partial class Demo10simple : System.Web.UI.Page
    16 {
    17     protected void Page_Load(object sender, EventArgs e)
    18     {
    19 
    20     }
    21     protected void SqlDataSource1_Selected(object sender, SqlDataSourceStatusEventArgs e)
    22     {
    23         IDbCommand cmd = e.Command;
    24 
    25         SqlParameter Return_Param;
    26         SqlParameter Average_Param;
    27         SqlParameter Maximum_Param;
    28         SqlParameter Minimum_Param;
    29 
    30         Return_Param = (SqlParameter)cmd.Parameters["@ret"];
    31         Average_Param = (SqlParameter)cmd.Parameters["@average"];
    32         Maximum_Param = (SqlParameter)cmd.Parameters["@maximum"];
    33         Minimum_Param = (SqlParameter)cmd.Parameters["@minimum"];
    34 
    35         this.TextBox1.Text = "输出参数名称:" + Average_Param.ParameterName + ",参数值(平均薪资):" + Average_Param.Value.ToString();
    36         this.TextBox2.Text = "输出参数名称:" + Maximum_Param.ParameterName + ",参数值(最高薪资):" + Maximum_Param.Value.ToString();
    37         this.TextBox3.Text = "输出参数名称:" + Minimum_Param.ParameterName + ",参数值(最低薪资):" + Minimum_Param.Value.ToString();
    38         this.TextBox4.Text = "存储过程返回值参数名称:" + Return_Param.ParameterName + ",参数值(人数):" + Return_Param.Value.ToString();
    39     }
    40 }
    41 

    在SqlDataSource的selected事件中,来获取输出参数的值,并赋值给页面上其它控件的属性。

    输出参数还是很用,有些直接在数据库里的运算结果,比如最大,最小,平均,可以输出到逻辑代码里,然后调用。


    合乎自然而生生不息。。。
  • 相关阅读:
    Qt Quick之QML与C++混合编程详解
    Qt QML与C++混合编程
    Qt QML和QtQuick简介以及QML实例
    Qt 渐变 QLinearGradient、 QConicalGradient、QRadialGradient
    Qt 加载HeightMap(高度图)构造3D地形图
    VisionPro内嵌脚本编译时显示:未定义类型“CogFindCircleTool”。未定义类型“CogToolResultConstants”
    VisionPro CogPMAlignTool
    VisionPro 卡尺原理
    VisionPro 卡尺测量长度的例子
    VisionPro 自学帮助
  • 原文地址:https://www.cnblogs.com/samwu/p/1786201.html
Copyright © 2020-2023  润新知