`
lovexuwenhao
  • 浏览: 200427 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ASP.NET之调用SQL存储过程

阅读更多

存储过程使用篇

1.    在SQL中执行
执行已创建的存储过程使用EXECUTE 命令其语法如下

 程序代码
[EXECUTE]
{[@return_statur=]
{procedure_name[;number] | @procedure_name_var}
[[@parameter=] {value | @variable [OUTPUT] | [DEFAULT] [,…n]
[WITH RECOMPILE]



各参数的含义如下
@return_status
是可选的整型变量用来存储存储过程向调用者返回的值
@procedure_name_var
是一变量名用来代表存储过程的名字
其它参数据和保留字的含义与Create PROCEDURE 中介绍的一样

例如我们有一个存储过程名为student_list_info要执行,在查询分析器中你只要写
Execute student_list_info
Go
就可以了
如果存储过程中包含有返回值的存储过程,那我们就必须指定参数值.看下面这个例子
此例摘自《SQLserver程序员指南》一书

 程序代码
create procedure salequa @stor_id char 4 ,@sum smallint output
as
select ord_num, ord_date, payterms, title_id, qty
from sales
where stor_id = @stor_id
select @sum = sum qty
from sales
where stor_id = @stor_id
go



要执行此存储过程,则我们要指定参数@sort_id,@sum的参数值.

 程序代码
declare @totalqua smallint
execute salequa '7131',@totalqua output
if @totalqua<=50
select '销售信息'='销售等级为3 销售量为'+rtrim cast @totalqua as varchar 20
if @totalqua>50 and @totalqua<=100
select '销售信息'='销售等级为2 销售量为'+rtrim cast @totalqua as varchar 20
if @totalqua>100
select '销售信息'='销售等级为1 销售量为'+rtrim cast @totalqua as varchar 20


运行结果为

 程序代码
ord_num ord_date payterms title_id qty
-------------------- --------------------------- ------------ -------- ------
N914008 1994-09-14 00:00:00.000 Net 30 PS2091 20
N914014 1994-09-14 00:00:00.000 Net 30 MC3021 25
P3087a 1993-05-29 00:00:00.000 Net 60 PS1372 20
P3087a 1993-05-29 00:00:00.000 Net 60 PS2106 25
P3087a 1993-05-29 00:00:00.000 Net 60 PS3333 15
P3087a 1993-05-29 00:00:00.000 Net 60 PS7777 25
6 row s affected
销售信息
-----------------------------------------
销售等级为1 销售量为130



2.    在ASP.NET中使用存储过程
要在ASP.Net(这里以c#为说明)中使用存储过程,首先要查看一下页面中是否引用了 System.Data.Sqlclient;当然数据库连接是必不可少的。我们知,一般我们在Asp.Net中调用数据的步骤是这样的:

新建一个数据库连接对象(一般用SqlConnection)→用Open()方法打开我们要操作的数据库→创建一个SqlCommand或SqlDataAdapter对象→对SQL命令或存储过程用ExecuteNonQuery()方法或ExecuteReader()方法进行执行数据操作→读取或输入数据至数据库→用Close()方法关闭连接.


由此可知,在使用存储过程前,我们要用SqlCommand对象或SqlDataAdapter对象使填充DataSet或共它在运用存储过程中有很大的作用.但其运用的方法是跟在Net中直接执行Sql语句区别并不是很大的,我们可以通过例子来说明是乍样调用存储过程的.
(1)    采用SqlCommand对象

 程序代码
string spid=Request.QueryString["supplyid"].Trim();
SqlConnection conndb=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
            conndb.Open();
            SqlCommand strselect = new SqlCommand("supplyinfo_select_supplyid",conndb);
            strselect.CommandType= CommandType.StoredProcedure;
            strselect.Parameters.Add("@supply_ID",spid);
            SqlDataReader reader = strselect.ExecuteReader();
            if(reader.Read())
            ...{
                LblId.Text=reader["Supply_Id"].ToString().Trim();
                LblTitle.Text=reader["Supply_Subject"].ToString().Trim();
                LblBigclass.Text=reader["Supply_CatID"].ToString().Trim();
                LblDesc.Text=reader["Supply_Details"].ToString().Trim();
                LblPurType.Text=reader["Supply_PurchaseType"].ToString().Trim();
                if(int.Parse(reader["Supply_Ischecked"].ToString().Trim())==1)
                ...{
                    LblIschk.Text="已通过审核";
                }
                else
                ...{
                    LblIschk.Text="没有通过审核";
                }
                if(int.Parse(reader["Supply_Isrcmd"].ToString().Trim())==1)
                ...{
                    LblIsrcmd.Text="已设置为推荐";
                }
                else
                ...{
                    LblIsrcmd.Text="没有设置为推荐";
                }
                switch(reader["Supply_Reader_Level"].ToString().Trim())
                ...{
                    case "0":
                        LblLevel.Text="设置所有人都可以看到此信息";
                        break;
                    case "1":
                        LblLevel.Text="设置注册会员可以看到此信息";
                        break;
                    case "2":
                        LblLevel.Text="设置VIP会员可以看到此信息";
                        break;
                }
            }




由上可以看到,利用SqlCommand对象调用存储过程的关键语句是:

 程序代码
SqlCommand strselect = new SqlCommand("supplyinfo_select_supplyid",conndb);
strselect.CommandType= CommandType.StoredProcedure;
strselect.Parameters.Add("@supply_ID",spid);


简单解释:声明一个SqlCommand对像,通过SqlCommand调用存储过程supplyinfo_select_supplyid,
同时包含了一个输入参数@supply_id,其值是变量spid,同时通过ExecuteReader()方法,查询数据相关的数据,通过label控件,将数据显示出来.

(2)采用SqlDataAdapter对象
程序代码:

 程序代码
private void buycatalog()
        {
            SqlConnection conndb= new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
            conndb.Open();
            SqlDataAdapter  strselect = new SqlDataAdapter("productclass",conndb);

            strselect.SelectCommand.CommandType = CommandType.StoredProcedure;

            DataSet ds = new DataSet();

            strselect.Fill(ds);

            DlstBuycatalog.DataSource =ds;

            DlstBuycatalog.DataKeyField ="PdtCat_ID";

            DlstBuycatalog.DataBind();

            conndb.Close();
        }



以上这个方法,就是通过SqlDataAdapter对像调用了SQL中存储过程productclass,通过DataSet将数据填充在ds中,同时指定DataList控件DlstBuycatalog的数据源是ds,主键是PdtCat_Id,最后再重新绑定Datalist控件.由这个方法我们可以看到用SqlDataAdapter调用存储过程中的关键是:
SqlDataAdapter  strselect = new SqlDataAdapter("productclass",conndb);
strselect.SelectCommand.CommandType = CommandType.StoredProcedure;
当存储过程中有参数时,我们又应该乍样做呢?其实这个跟SqlCommand的差不多,我们只要再加一句
Strselect.SelectCommand.Parameter.Add(“@pdt_name”,txtpdtname.Text());
就可以了,其中@pdt_name是在存储过程中声明的参数变量名,而txtpdtname.text()是在.net中赋于变量@pdt_name的值了。认真看一下下面这个存储过程就很清楚了:
由上面我们可以知道在调用存储过程中,最关键的对象是Command对象,这个对象可以通过ExecuteReader()方法执行数据查询,还可以返回一个单一值的查询,还可以通过ExecuteScalar()方法进行相关的数据统计,还可以通过ExecuteNonQuery()方法进行数据更新,增删改的执行操作,而在执行这些SQL操作时,往往是与相关的控件DataGrid ,DataList,Repeat控件结合使用的.

分享到:
评论

相关推荐

    c#调用存储过程两种方法 - - c# sql .net asp.net

    c#调用存储过程两种方法 - - c# sql .net asp.net

    ( .net 利用三层 调用 sql存储过程 实现增删查改

    .NET 利用三层架构调用 SQL 存储过程实现增删查改 在企业应用开发中,使用 .NET 框架和 SQL Server 数据库是非常常见的。为提高开发效率和系统的可维护性,使用三层架构来实现业务逻辑是非常必要的。在本文中,我们...

    asp.net如何调用存储过程

    在ASP.NET中调用SQL Server中的存储过程是常见的数据库交互方式,这有助于提高代码的可维护性和执行效率。本文将详细讲解如何在ASP.NET中实现这一功能。 首先,确保你已经在SQL Server中创建了存储过程。存储过程是...

    asp.net调用输出参数存储过程

    在这个场景中,"asp.net 调用输出参数存储过程" 是一个关键知识点,意味着我们要讨论如何在 ASP.NET 中调用包含输出参数的数据库存储过程。输出参数允许存储过程将值返回给调用者,这对于传递计算结果或状态信息非常...

    asp.net SQL存储过程分页

    总结,ASP.NET SQL存储过程分页是一个重要的数据库查询优化技术,它结合了存储过程的高效性和分页的实用性。通过创建合适的存储过程,正确配置ASP.NET的控件,以及处理好分页事件,我们可以构建出高效且用户友好的...

    asp.net 调用带参数的存储过程

    综上所述,ASP.NET调用带参数的存储过程涉及到数据库连接的建立、SqlCommand对象的配置、参数的添加和执行。通过这种方式,开发者可以灵活地与数据库进行交互,同时利用存储过程带来的性能优势。在实践中,务必注意...

    ASP.Net学习之常用SQL存储过程

    【ASP.Net与SQL存储过程】 ASP.Net开发中,SQL存储过程扮演着重要的角色,尤其是在大型项目中,它们有助于提升数据库的安全性和SQL代码的执行效率。本文将深入探讨ASP.Net中如何利用SQL存储过程,并提供一些基础...

    c# asp.net实现sql server数据库备份

    总之,使用C#和ASP.NET实现SQL Server数据库备份,主要涉及SMO库的使用,通过编写代码来配置备份类型、设备和选项,然后调用SqlBackup方法执行备份。在实际应用中,还需要考虑错误处理、日志记录、备份策略规划等...

    ASP.NET+SQL Server 系统开发实例

    在与ASP.NET结合使用时,SQL Server通常作为后端数据存储,通过ADO.NET或Entity Framework等数据访问技术与前端交互。这些技术允许开发者以声明性方式执行SQL查询,管理和操作数据库中的数据。 在"系统源代码"中,...

    asp.net中如何调用sql存储过程实现分页

    在ASP.NET中调用SQL存储过程实现分页是一种常见的数据处理技术,这有助于提高网站的性能,因为它减少了从数据库检索大量数据的需求。以下是一个详细的步骤和示例代码,解释了如何在ASP.NET中进行此操作。 1. **创建...

    基于asp.net+SqlServer存储过程

    2. **调用存储过程**:在ASP.NET的后端代码中,通过ADO.NET或者Entity Framework等数据访问技术,调用存储过程并传递参数。这通常涉及到打开数据库连接、创建SqlCommand对象、设置参数值、执行命令并处理结果。 3. ...

    在ASP.NET中调用存储过程方法

    在ASP.NET中调用存储过程方法是常见的数据库操作方式,特别是在构建B/S系统时。存储过程是一组预先编译并存储在数据库中的SQL语句和控制结构,可以通过名称调用,支持参数传递,分为返回记录集、返回数值和行为存储...

    ASP.NET中调用存储过程的例子

    ASP.NET中调用存储过程的例子 ASP.NET中调用存储过程是一种常用的数据库交互方式。通过调用存储过程,可以实现复杂的业务逻辑和...在ASP.NET中,我们可以使用ADO.NET来调用存储过程,来实现复杂的业务逻辑和数据操作。

    asp.net中调用oracle存储过程的方法

    不多说了,本文通过两种方法介绍asp.net中调用oracle存储过程的方法,具体内容请看下面代码。 调用oracle存储过程方法一: ORACLE代码 CREATE OR REPLACE PROCEDURE gd_CURSOR(MYCS1 OUT SYS_REFCURSOR

    ASP.NET源码:ASP.NET2.0+SQLSERVER网络应用系统开发案例精解,有很多源码案例。

    通过ADO.NET,开发者可以轻松地在ASP.NET应用程序中连接和操作SQL Server数据库,实现数据的存储、查询、更新和删除。 这个压缩包文件“ASP.NET2.0+SQLSERVER网络应用系统开发案例精解”可能包含了一系列实际的开发...

    asp.net+sql 博客源码

    源码中可能包含了这些模块的实现,例如,使用ASP.NET的Page类处理HTTP请求,用ADO.NET与SQL Server通信,执行存储过程进行数据操作。代码可能会使用Entity Framework或NHibernate这样的ORM(对象关系映射)工具,...

    ExtJs、ASP.net运用Linq to SQL与SQL储存过程交互.

    本文档主要探讨了如何在ExtJs前端框架与ASP.net后端技术结合的场景下,利用Linq to SQL与SQL存储过程进行数据交互。通过这种方式,可以有效地提高数据处理效率和安全性。 ##### 1.1 Grid后台分页 Grid控件是ExtJs...

Global site tag (gtag.js) - Google Analytics