问题:在执行这句int n = SQLHelper.ExecuteNonQuery(CommandType.StoredProcedure, "[AgentUploadImg]", parame);
有异常:未找到存过过程。存储过程确实在数据库中存在的,其它的存储过程都能找到。我没用过存储过程return返回值,也不知哪不对 O(∩_∩)O谢谢
存储过程代码:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER proc [dbo].[AgentUploadImg]
(
@xid int
,@path varchar(100)
)
as
begin
declare @return int
select @return=count(xid) from InfoImg where xid=@xid
if(@return>0)
begin
return @return
end
else
begin
insert into InfoImg(xid,[path])values(@xid,@path)
end
end
C#程序代码
try
{
SqlParameter[] parame = {
new SqlParameter("@xid",SqlDbType.Int),
new SqlParameter("@path",SqlDbType.VarChar,100),
new SqlParameter("@return",SqlDbType.Int)
};
parame[0].Value = xid;
parame[1].Value = path;
parame[2].Direction = ParameterDirection.ReturnValue;
int n = SQLHelper.ExecuteNonQuery(CommandType.StoredProcedure, "[AgentUploadImg]", parame); int values = (int)parame[2].Value;
int num = 0;
if (values < 6)
{
if (n > 0)
num = 1;//上传成功
else
n = 2;//上传失败
}
else
num = 0;//已超过5张
return num;
}
catch
{
return 2;
}
有异常:未找到存过过程。存储过程确实在数据库中存在的,其它的存储过程都能找到。我没用过存储过程return返回值,也不知哪不对 O(∩_∩)O谢谢
存储过程代码:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER proc [dbo].[AgentUploadImg]
(
@xid int
,@path varchar(100)
)
as
begin
declare @return int
select @return=count(xid) from InfoImg where xid=@xid
if(@return>0)
begin
return @return
end
else
begin
insert into InfoImg(xid,[path])values(@xid,@path)
end
end
C#程序代码
try
{
SqlParameter[] parame = {
new SqlParameter("@xid",SqlDbType.Int),
new SqlParameter("@path",SqlDbType.VarChar,100),
new SqlParameter("@return",SqlDbType.Int)
};
parame[0].Value = xid;
parame[1].Value = path;
parame[2].Direction = ParameterDirection.ReturnValue;
int n = SQLHelper.ExecuteNonQuery(CommandType.StoredProcedure, "[AgentUploadImg]", parame); int values = (int)parame[2].Value;
int num = 0;
if (values < 6)
{
if (n > 0)
num = 1;//上传成功
else
n = 2;//上传失败
}
else
num = 0;//已超过5张
return num;
}
catch
{
return 2;
}
解决方案 »
- vs.net2010中在项目属性中改变目标框架,生成失败怎么解决呢?
- 调用动态库函数,程序就自动退出
- ASP.NET(C#)
- DevExpress的PageHeaderFooter怎样能设置多行页眉?
- 这难道是微软URI类的BUG!?
- Ftp服务器禁用PASV(被动模式),请教如何传送数据(使用Socket链接)????
- datagrid中如何在一行中显示多条记录!
- 水晶报表打包安装后不能使用,急(在线等)
- C# 之奇葩问题关于Dataset 的fill 方法 求高手解决
- 用C#编写的Web,在这个Web中如何打开一个没有工具栏和菜单栏的窗口!
- 。。。只要懂一点的都知道
- 求代码: 多线程如何修改控件的属性
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
goALTER proc [dbo].[AgentUploadImg]
(
@xid int
,@path varchar(100)
,@return int output
)
as
begin
declare @tempReturn
select @tempReturn=count(xid) from InfoImg where xid=@xid
if(@return>0)
begin
set @return=@tempReturn
end
else
begin
insert into InfoImg(xid,[path])values(@xid,@path)
end
end外面调用的时候
你是用微软的那个SQLHELPER还是自己写的 微软那个没提供执行带返回参数的存储过程方法 需要自己写个Sqlcommand cmd=new Sqlcommand(存储过程名,数据库连接对象)
cmd.CommandType=CommandType.StoreProcedure;
cmd.Paramerters.Add(你刚才的那几个参数)
cmd.ExeNonQuery();
int returnValue=cmd.Parameters["@return"].Value;//这里就是你要的返回值了
declare @tempReturn int;
declare @tempReturn int;
SqlConnection conn = "";
conn.Open();
SqlCommand MyCommand = new SqlCommand("", conn);
MyCommand.CommandType = CommandType.StoredProcedure;
MyCommand.Parameters.Add(new SqlParameter("@a", SqlDbType.Int));
MyCommand.Parameters["@a"].Value = 10;
MyCommand.Parameters.Add(new SqlParameter("@b", SqlDbType.Int));
MyCommand.Parameters["@b"].Value = 20;
MyCommand.Parameters.Add(new SqlParameter("@return", SqlDbType.Int));
MyCommand.Parameters["@return"].Direction = ParameterDirection.ReturnValue;
MyCommand.ExecuteNonQuery();
Response.Write(MyCommand.Parameters["@return"].Value.ToString());