• 全部
  • .NET Framework
  • ASP
  • Web Services
  • .NET互联网桌面应用
  • VB
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • AppLauncher
  • 问答

asp.net中使用sql server存储过程获得output参数问题(解决问题再加分)

comy 2003-06-02 11:43:16
按照msdn的例子获得sql server存储过程的output参数为什么总是为null,而在osql中按照同样的条件执行该存储过程获得正确的结果,有返回值,即存储过程本身没有错误。
附msdn例子
SqlClient[C#]
SqlCommand sampleCMD = new SqlCommand("SampleProc", nwindConn);
sampleCMD.CommandType = CommandType.StoredProcedure;

SqlParameter sampParm = sampleCMD.Parameters.Add("RETURN_VALUE", SqlDbType.Int);
sampParm.Direction = ParameterDirection.ReturnValue;

sampParm = sampleCMD.Parameters.Add("@InputParm", SqlDbType.NVarChar, 12);
sampParm.Value = "Sample Value";

sampParm = sampleCMD.Parameters.Add("@OutputParm", SqlDbType.NVarChar, 28);
sampParm.Direction = ParameterDirection.Output;

nwindConn.Open();

SqlDataReader sampReader = sampleCMD.ExecuteReader();

Console.WriteLine("{0}, {1}", sampReader.GetName(0), sampReader.GetName(1));

while (sampReader.Read())
{
Console.WriteLine("{0}, {1}", sampReader.GetInt32(0), sampReader.GetString(1));
}

sampReader.Close();
nwindConn.Close();

Console.WriteLine(" @OutputParm: {0}", sampleCMD.Parameters["@OutputParm"].Value);
Console.WriteLine("RETURN_VALUE: {0}", sampleCMD.Parameters["RETURN_VALUE"].Value);
...全文
349 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
comy 2003-06-03
非常感谢lizhenlz(小李)、cl_03(燕七)
请至下面连接领分
http://expert.csdn.net/Expert/topic/1868/1868573.xml?temp=.6063654
回复
comy 2003-06-02
to cl_03(燕七)
用ExecuteScalar();可以,但是为什么用.ExecuteReader就不对呢?
回复
New_bug 2003-06-02
Dim oConn As New SqlConnection()
Dim oCommand As New SqlCommand("", oConn)
Dim oStatus As SqlClient.SqlParameter

oStatus = oCommand.Parameters.Add(New SqlParameter("@O_STATUS", SqlDbType.Char, 1))
oStatus.Direction = ParameterDirection.Output

取值:oStatus.Value
回复
comy 2003-06-02
to lizhenlz(小李)
可否看一下你的存储过程脚本
按你说的做,就没有报错了,但是还是得不到值
回复
cl_03 2003-06-02
//连接数据库
System.Data.SqlClient.SqlConnection conn = FileClass.Database.Conn;
//conn.ConnectionString = "server=server;uid=sa;Password=;database=ytdb";
conn.Open();

SqlCommand com = new SqlCommand();
com.Connection = conn;

com.CommandText = "proc_bal_htno";
com.CommandType = CommandType.StoredProcedure;
SqlParameter[] p_htno = new SqlParameter[5];
p_htno[0] = new SqlParameter();
p_htno[1] = new SqlParameter();
p_htno[2] = new SqlParameter();
p_htno[3] = new SqlParameter();
p_htno[4] = new SqlParameter();

p_htno[0].ParameterName = "@year";
p_htno[0].DbType = System.Data.DbType.String;
p_htno[0].Value = this.drop_year.Items[this.drop_year.SelectedIndex].Value;

p_htno[1].ParameterName = "@htxz";
p_htno[1].DbType = System.Data.DbType.String;
p_htno[1].Value = this.drop_character.Items[this.drop_character.SelectedIndex].Value;

p_htno[2].ParameterName = "@ylh";
p_htno[2].DbType = System.Data.DbType.String;
p_htno[2].Value = this.drop_material.Items[this.drop_material.SelectedIndex].Value;

p_htno[3].ParameterName = "@hth";
p_htno[3].DbType = System.Data.DbType.String;
p_htno[3].Direction = ParameterDirection.Output;
p_htno[3].Size = 12;

p_htno[4].ParameterName = "@ylc_code";
p_htno[4].DbType = System.Data.DbType.String;
p_htno[4].Value = this.drop_smelt.Items[this.drop_smelt.SelectedIndex].Value;

for ( int i =0 ;i< p_htno.Length;i++)
{
com.Parameters.Add(p_htno[i]);
}
com.ExecuteScalar();
this.text_hth.Text = com.Parameters["@hth"].Value.ToString();
回复
CMIC 2003-06-02
up
回复
lizhenlz 2003-06-02
sampParm.Direction = ParameterDirection.InputOutput

回复
lizhenlz 2003-06-02
我给个例子给你,我这个是成功的.

Dim sqlcmt As New SqlCommand()
Dim sqlconn As New SqlConnection(str_conn)
sqlcmt.CommandType = CommandType.StoredProcedure
sqlcmt.CommandText = "[dbo].[up_Import_Convert_Dbf_Error_Temp_Table_Emms]"
sqlcmt.CommandTimeout = nTimeOut
sqlcmt.Connection = sqlconn
If sqlconn.State = ConnectionState.Closed Then
sqlconn.Open()
End If
Dim oTempTableName As New SqlParameter()
Dim oTempTableID As New SqlParameter()
oTempTableName.ParameterName = "@strTemp_Error_Table"
oTempTableName.SqlDbType = SqlDbType.NVarChar
oTempTableName.Size = 50
oTempTableName.Direction = ParameterDirection.InputOutput
oTempTableName.Value = ""
sqlcmt.Parameters.Add(oTempTableName)
oTempTableID.ParameterName = "@nTableID"
oTempTableID.SqlDbType = SqlDbType.Int
oTempTableID.Direction = ParameterDirection.InputOutput
oTempTableID.Value = 0
sqlcmt.Parameters.Add(oTempTableID)
sqlcmt.ExecuteReader(CommandBehavior.CloseConnection)
Dim Arr(1) As String
Arr(0) = System.Convert.ToString(oTempTableID.Value)
Arr(1) = System.Convert.ToString(oTempTableName.Value)
Return Arr
回复
lizhenlz 2003-06-02
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[up_Import_Convert_Dbf_Error_Temp_Table_Emms]') and OBJECTPROPERTY(id,
N'IsProcedure') = 1)
drop procedure [dbo].[up_Import_Convert_Dbf_Error_Temp_Table_Emms]
go
SET QUOTED_IDENTIFIER OFF
go
SET ANSI_NULLS on
go
----系统部分
CREATE PROCEDURE [dbo].[up_Import_Convert_Dbf_Error_Temp_Table_Emms]
@strTemp_Error_Table nvarchar(50) output, --'生成错误数据临时表的名称
@nTableID int output --'对应表tImport_TempTableName中nTableID(错误数据)
AS
set ANSI_Warnings on

--'变量定义
declare @nCount int --'判断表tImport_TempTableName的记录是否为空

begin
select @nCount=count(*) from tImport_TempTableName
if @nCount>0 --'如果有记录
begin
select @nTableID=max(nTableID+1),@strTemp_Error_Table='_Temp_Error_'+ltrim(rtrim(cast(max(nTableID+1) as nvarchar(20))))
from tImport_TempTableName holdlock
insert into tImport_TempTableName(nTableID,strTableName) values(@nTableID,@strTemp_Error_Table)
end
else --'如果没有记录,则取1
begin
set @nTableID=1
set @strTemp_Error_Table='_Temp_Error_1'
insert into tImport_TempTableName(nTableID,strTableName) values(@nTableID,@strTemp_Error_Table)
end
end
回复
cl_03 2003-06-02
ExecuteReader返回的是一个数据填充对象,而在你的存储过程中并没有返回一个结果集。
回复
相关推荐
ASP.NET站点性能提升-加速SqlServer数据库访问
转自:http://www.cnblogs.com/ntwo/archive/2010/12/15/1907040.htmlSQL Server本身就是个很大的题目。这里不会涉及到SQL Server数据库访问的方方面面,而是重...
asp.net调用存储过程方法
asp.net调用存储过程方法 关键词 asp.net存储过程 在使用.net的过程中,数据库访问是一个很重要的部分,特别是在b/s系统的构建过程中,数据库操作几乎成为了一个
asp.net MVC EF+并发处理
ASP.NET诞生以来,微软提供了不少控制并发的方法,在了解这些控制并发的方法前,我们先来简单介绍下并发! 并发:同一时间或者同一时刻多个访问者同时访问某一更新操作时,会产生并发! 针对并发的处理,又...
分页存储过程(一)使用SQL Server2005的新函数构造分页存储过程
使用SQL Server2005的新函数构造分页存储过程 分页存储过程一直是很多人经常用到的东西,怎么样才能设计一个既实用,又强大,还可以解决大数据量的分页存储过程呢?其实在很多时候设计的度还是要把握的,不至于让...
ASP.NET中常用的优化性能方法
ASP.NET中常用的优化性能方法 1. 数据库访问性能优化    数据库的连接和关闭   访问数据库资源需要创建连接、打开连接和关闭连接几个操作。这些过程需要多次与数据库交换信息以通过身份验证,比较...
asp.net中Web.config文件各属性详解
本文章教您认识web.config,并精通它里面的各个属性配置。...Web.config 文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序的身份验证方式),它
ASP.NET和PHP全面对比
谁是速度之王?  刚刚在9月编程语言排行榜上取得历史性突破的PHP在Web开发领域最到的对手...Joe表示,他会将这样的测试持续下去,并寻求更为合适的方式,以获得对实际项目来说尽可能有参考价值的结论。  Joe在...
.NET 开源SqlServer ORM框架 SqlSugar 3.0 API
3.1.x ,将作为3.X系统的最后一个版本,下面将会开发 全新的功能 ...   优点: ...SqlSugar 是一款小巧,并且功能齐全的ORM,并不需要像Dapper...SqlSugar 语法易用简单 ,有漂亮的拉姆达语法,也支持Dapper SQL和ADO...
SQL Server数据库理论知识
聚集索引的排序顺序仅仅表示数据页链在逻辑上是有序的。而不是按照顺序物理的存储在磁盘上 行的物理位置和行在索引的位置是相同的 每个表只能有一个聚集索引 聚集索引的平均大小大约为表大小的5%左右 2非聚集...
Asp.net 中使用JqGrid学习记录一:使用jqgrid展示数据并带分页功能
jqGrid的参数详解: 名称 类型 描述 默认值 可修改 url string 获取数据的地址 datatype string 从服务器端返回的数据类型,默认...
ASP.NET Core Web API带有刷新令牌的JWT身份验证流程
ASP.NET Core Web API带有刷新令牌的JWT身份验证流程 翻译自:地址 在今年年初,我整理了有关将JWT身份验证与ASP.NET Core Web API和Angular一起使用的详细指南。目前有120多个评论,它是Internet上这个角落最...
Asp.net面试题
Asp.net核心技术思想  1、概述反射和序列化 反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或...
ASP.NET优化
ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响。系统将用户的数据库连接放在连接池,需要时取出,关闭时收回连接,等待下一次的连接请求。  连接池的大小是有限的,如
ASP.NET(C#)web.config
[摘自]http://blog.csdn.net/superbirds/archive/2010/01/11/5173083.aspx  ASP.NET(C#)web.config文件详解 收藏 一、认识Web.config文件  Web.config 文
ASP.NET(C#)web.config文件详解
一、认识Web.config文件 Web.config 文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序的身份验证方式),它可以出现在应用程序的每一个目录。当你通过.NET...
web.config详解+asp.net优化_asp.net技巧
Web.config 文件是一个xml文本文件,它用来储存 asp.NET Web 应用程序的配置信息(如最常用的设置asp.NET Web 应用程序的身份验证方式),它可以出现在应用程序的每一个目录。当你通过.NET新建一个Web应用程序后,...
ASP.NET 应用程序性能优化
导读: 1 前言 性能优化的主要目标是提高“并发用户数量”,“吞吐量”,“可靠性”这样几个指标。 本质上说,性能优化的工作应该是多方面的,要做到“点面结合、由表及里”。比如:从代价的角度来考虑,应尽量...
Web.config详解+asp.net优化
Web.config详解+asp.net优化(1) 一、认识Web.config文件 Web.config 文件是一个xml文本文件,它用来储存 asp.NET Web 应用程序的配置信息(如最常用的设置asp.NET Web 应用程序的身份验证方式),它可以...
ASP.NET Core+Redis+Mysql面试题&答案
1.如何在ASP.NET Core激活Session功能 2.什么是中间件 3.Applicationbuilder的Use和Run方法有什么区别 4.如何使taghelper在元素这一层上失效 5.何为ASP.NET Core 6.ASP.NET CoreAOP的支持有哪些 7.ASP.NET Core ...
了解ASP.NET中的web.config文件
 一、认识Web.config文件Web.config 文件是一个XML文本文件,它用来储存 ASP.NET Web应用程序的配置信息(如最常用的设置ASP.NET Web应用程序的身份验证方式),它可以出现在应用程序的每一个目录。当你通过.NET...
ASP.NET开发大全第7章.数据库与ADO.NET基础
数据库在任何应用程序开发中都非常的重要,特别在ASP.NET应用程序开发,数据库通常被用来保存用户的信息、文章内容等数据,同时数据库也能够提供用户进行查询、搜索等操作。传统的纯静态HTML页面已经不能满足...
asp.net 优化
一、数据库操作 1、用完马上关闭数据库连接  访问数据库资源需要创建连接、打开连接和关闭连接几个操作。这些过程需要多次与...ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响。系
Web.cofig详解+asp.net优化
Web.config导读: Web.config 文件是一个XML文本文件,它用来储存ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序的身份验证方式),它可以出现在应用程序的每一个目录。当你通过.NET新建一...
asp.net 数据库操作
ASP.NET操作数据库通过对ADO.NET的基本讲解,以及讲解了一些数据源控件的基本用法后,本章将介绍一些ASP.NET操作数据库的高级用法,包括使用SQLHelper,以及数据源控件对数据的操作。本章是对前面的数据库知识的一种...
24个带后台的小程序源码
24个带有后台的小程序源码下载,供大家交流学习(后台语言多种)
CListControl设置颜色
CListControl类派生,设置单元格颜色,丰富功能
SSIM 指标说明 文章
介绍 SSIM 图像评价指标和由来,比较一般的图像质量评价标准,比较ssim 和尖峰信噪比的差异,等等,是英文资料
Linux系统管理员/网络管理员(PDF版)
两本非常好的Linux系统学习的书 系统管理主要介绍Linux系统的结构、管理、命令等 网络管理主要从网络协议角度出发阐述Linux的网络功能
STM32Cube和HAL库使用初体验-第5季第2部分
本季课程主要讲解STM32的全新开发方式:使用STM32CubeMX工具做图形化配置,自动生成初始化代码;添加各种中间件;使用HAL库和LL库来操作外设。结合朱老师物联网大讲堂专为nbiot物联网开发而设计的NB476开发板,本季课程能够让大家彻底掌握物联网时代以nbiot和低功耗STM32L4单片机为代表的典型开发模式,实战意义非常重要。 本课程是《朱有鹏老师单片机完全学习系列课程》第5季第2个课程,本部分以时钟和GPIO模块为案例来讲解STM32CubeMX工具加HAL库加MDK5这套开发体系的流程、技术细节,目标是让大家真正入门HAL库方式开发STM32单片机。后续再接着讲其他更复杂外设。
STM32F103中文数据手册
这个里面包含了STM32F103的各种型号的数据手册,方面理解
发帖
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2003-06-02 11:43
社区公告
暂无公告