- 浏览: 200427 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
Jasper520:
我的alert(td);是null
Struts2批量上传文件 -
chanly:
直直走 写道大家不要点那个链接,那里边有木马。 可恶 这 ...
关于数据库权限设计的探讨 -
化蝶自在飞:
兄弟以后发代码用 code 吧.那样会更好.呵呵.支持一下.
FCKeditor 利用javascript插入图片以及统计当前输入字数方法 -
paddycq:
导出的文件命名用中文出错,要对中文进行编码,只支持ISO-88 ...
jsp导出word、excel -
直直走:
大家不要点那个链接,那里边有木马。 可恶 这可是技术论坛 ...
关于数据库权限设计的探讨
存储过程使用篇
1. 在SQL中执行
执行已创建的存储过程使用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程序员指南》一书
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的参数值.
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
运行结果为
-------------------- --------------------------- ------------ -------- ------
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对象
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对象调用存储过程的关键语句是:
strselect.CommandType= CommandType.StoredProcedure;
strselect.Parameters.Add("@supply_ID",spid);
简单解释:声明一个SqlCommand对像,通过SqlCommand调用存储过程supplyinfo_select_supplyid,
同时包含了一个输入参数@supply_id,其值是变量spid,同时通过ExecuteReader()方法,查询数据相关的数据,通过label控件,将数据显示出来.
(2)采用SqlDataAdapter对象
程序代码:
{
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控件结合使用的.
发表评论
-
ASP.NET访问IIS元数据库失败--解决方案
2011-05-31 12:41 2028访问IIS元数据库失败时间:在本地访问.aspx页面时总出现如 ... -
Web.config配置文件详解
2010-12-03 09:38 1847花了点时间整理了一下ASP.NET Web.config配置文 ... -
dsdsds
2009-09-16 22:37 1155http://topic.csdn.net/t/2005102 ... -
asp.net中判断链接来源
2009-09-16 22:07 2214在网页制作中,在制作管理后台的时候,为了保证安全性,我们经常需 ... -
访问IIS元数据库失败
2009-09-16 21:55 3051装了VS2005再装IIS,结果出了些小问题 访问IIS元数据 ... -
关于sqlhelper调用存储过程和获取参数返回值
2009-09-09 16:00 3575SQLHelper类给我们操作数据库提供了便利,有些人说, ... -
图解建立三层架构项目
2009-09-01 10:00 2175建立一个名为 mysite的项目,采用三层构架:1.新建立一个 ... -
UrlRewrite实现二级域名或多级域名
2009-08-01 17:39 1490本文来自CSDN博客,转载请标明出处:http://blog. ... -
使用csc命令将.cs文件编译成.dll的过程
2009-08-01 17:20 2285很多时候,我们需要将.cs ... -
反编译工具Reflector下载(集成两个常用.net插件,FileGenerator和FileDisassembler)
2009-08-01 17:19 5490Reflector是一款比较强大的反编译工具,相信很多朋友都用 ... -
一个过滤特殊字符的函数ASP.NET (C#)
2009-07-22 13:53 4309最近发现,网络实在是一个很不安全的东西。你开发的东西如果不做任 ... -
Asp.net调用Access存储过程
2009-07-17 10:47 3105调试环境:WinXP-sp2+Access ... -
在Access2000使用存储过程进行参数查询(ASP.NET)
2009-07-17 10:46 1630不像SQLSERVER存储过程,Access2000参数查询不 ... -
Asp.net生成htm静态文件的两种途径
2009-03-19 23:11 1230现在很多网站特别是资讯类的都把内容生成静态页(htm\html ... -
Asp.net 2.0三层架构的构建与理解
2009-02-12 22:01 3033三层架构分别是数据访问层 database access la ... -
sqlhelper使用指南 之 使用 SqlHelper 类执行命令
2009-01-11 12:49 3642摘要:Data Access Application Bloc ... -
sqlhelper使用指南 之 使用 SqlHelperParameterCache 类管理参数
2009-01-11 12:45 3250使用 SqlHelperParameterCache 类管理参 ... -
验证视图状态 MAC 失败
2008-12-27 16:11 2021出错提示: 验证视图状态 MAC 失败。如果此应用程序由网络场 ... -
asp.net调用SQL存储过程之回传多值
2008-12-27 12:33 1600asp.net代码: private void Loa ... -
ASP.NET实现伪静态
2008-10-11 16:10 1223大家一定经常在网络上看到很多网站的地址后缀都是用XX.HTML ...
相关推荐
c#调用存储过程两种方法 - - c# sql .net asp.net
.NET 利用三层架构调用 SQL 存储过程实现增删查改 在企业应用开发中,使用 .NET 框架和 SQL Server 数据库是非常常见的。为提高开发效率和系统的可维护性,使用三层架构来实现业务逻辑是非常必要的。在本文中,我们...
在ASP.NET中调用SQL Server中的存储过程是常见的数据库交互方式,这有助于提高代码的可维护性和执行效率。本文将详细讲解如何在ASP.NET中实现这一功能。 首先,确保你已经在SQL Server中创建了存储过程。存储过程是...
在这个场景中,"asp.net 调用输出参数存储过程" 是一个关键知识点,意味着我们要讨论如何在 ASP.NET 中调用包含输出参数的数据库存储过程。输出参数允许存储过程将值返回给调用者,这对于传递计算结果或状态信息非常...
总结,ASP.NET SQL存储过程分页是一个重要的数据库查询优化技术,它结合了存储过程的高效性和分页的实用性。通过创建合适的存储过程,正确配置ASP.NET的控件,以及处理好分页事件,我们可以构建出高效且用户友好的...
综上所述,ASP.NET调用带参数的存储过程涉及到数据库连接的建立、SqlCommand对象的配置、参数的添加和执行。通过这种方式,开发者可以灵活地与数据库进行交互,同时利用存储过程带来的性能优势。在实践中,务必注意...
【ASP.Net与SQL存储过程】 ASP.Net开发中,SQL存储过程扮演着重要的角色,尤其是在大型项目中,它们有助于提升数据库的安全性和SQL代码的执行效率。本文将深入探讨ASP.Net中如何利用SQL存储过程,并提供一些基础...
总之,使用C#和ASP.NET实现SQL Server数据库备份,主要涉及SMO库的使用,通过编写代码来配置备份类型、设备和选项,然后调用SqlBackup方法执行备份。在实际应用中,还需要考虑错误处理、日志记录、备份策略规划等...
在与ASP.NET结合使用时,SQL Server通常作为后端数据存储,通过ADO.NET或Entity Framework等数据访问技术与前端交互。这些技术允许开发者以声明性方式执行SQL查询,管理和操作数据库中的数据。 在"系统源代码"中,...
在ASP.NET中调用SQL存储过程实现分页是一种常见的数据处理技术,这有助于提高网站的性能,因为它减少了从数据库检索大量数据的需求。以下是一个详细的步骤和示例代码,解释了如何在ASP.NET中进行此操作。 1. **创建...
2. **调用存储过程**:在ASP.NET的后端代码中,通过ADO.NET或者Entity Framework等数据访问技术,调用存储过程并传递参数。这通常涉及到打开数据库连接、创建SqlCommand对象、设置参数值、执行命令并处理结果。 3. ...
在ASP.NET中调用存储过程方法是常见的数据库操作方式,特别是在构建B/S系统时。存储过程是一组预先编译并存储在数据库中的SQL语句和控制结构,可以通过名称调用,支持参数传递,分为返回记录集、返回数值和行为存储...
ASP.NET中调用存储过程的例子 ASP.NET中调用存储过程是一种常用的数据库交互方式。通过调用存储过程,可以实现复杂的业务逻辑和...在ASP.NET中,我们可以使用ADO.NET来调用存储过程,来实现复杂的业务逻辑和数据操作。
不多说了,本文通过两种方法介绍asp.net中调用oracle存储过程的方法,具体内容请看下面代码。 调用oracle存储过程方法一: ORACLE代码 CREATE OR REPLACE PROCEDURE gd_CURSOR(MYCS1 OUT SYS_REFCURSOR
通过ADO.NET,开发者可以轻松地在ASP.NET应用程序中连接和操作SQL Server数据库,实现数据的存储、查询、更新和删除。 这个压缩包文件“ASP.NET2.0+SQLSERVER网络应用系统开发案例精解”可能包含了一系列实际的开发...
源码中可能包含了这些模块的实现,例如,使用ASP.NET的Page类处理HTTP请求,用ADO.NET与SQL Server通信,执行存储过程进行数据操作。代码可能会使用Entity Framework或NHibernate这样的ORM(对象关系映射)工具,...
本文档主要探讨了如何在ExtJs前端框架与ASP.net后端技术结合的场景下,利用Linq to SQL与SQL存储过程进行数据交互。通过这种方式,可以有效地提高数据处理效率和安全性。 ##### 1.1 Grid后台分页 Grid控件是ExtJs...