C# 获取存储过程的返回值与查询结果

panyuan911 2010-04-06 01:29:20
C# 怎么执行一个存储过程后获取返回值“Return Value”和查询结果?

存储过程类似:

DECLARE @ret int
select @ret = count(id) FROM UserInfo
SELECT TOP (@PageSize) * FROM UserInfo WHERE UserName not in (SELECT ((@Page-1)*@PageSize) UserName FROM UserInfo)
return @ret

获取总数量和经过分页的查询结果

我要执行的是另外一个存储过程:aspnet_Membership_GetAllUsers,差不多
...全文
783 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
criedshy 2010-04-06
  • 打赏
  • 举报
回复
SqlConnection conn = new SqlConnection(SqlHelper.SqlConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "aspnet_Membership_GetAllUsers";
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@ApplicationName", "CFPhoto");
cmd.Parameters.AddWithValue("@PageIndex", ThisPage);
cmd.Parameters.AddWithValue("@PageSize", PageSize);
cmd.Parameters.Add("@RETURN_VALUE","").Direction = ParameterDirection.Output;
conn.Open();
//cmd.ExecuteNonQuery();//先执行一遍
SqlDataReader dr = cmd.ExecuteReader();//再执行一遍
Label1.Text = cmd.Parameters["@RETURN_VALUE"].Value.ToString();
GridView1.DataSource = dr;
GridView1.DataBind();
dr.Close();
criedshy 2010-04-06
  • 打赏
  • 举报
回复
那你可以用存储过程输出参数啊

苏飞论坛 2010-04-06
  • 打赏
  • 举报
回复
SqlConnection conn = new SqlConnection(SqlHelper.SqlConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "aspnet_Membership_GetAllUsers";
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@ApplicationName", "CFPhoto");
cmd.Parameters.AddWithValue("@PageIndex", ThisPage);
cmd.Parameters.AddWithValue("@PageSize", PageSize);
cmd.Parameters.Add("@RETURN_VALUE","").Direction = ParameterDirection.ReturnValue;
conn.Open();
cmd.ExecuteNonQuery();//先执行一遍
SqlDataReader dr = cmd.ExecuteReader();//再执行一遍
Label1.Text = cmd.Parameters["@RETURN_VALUE"].Value.ToString();
GridView1.DataSource = dr;
GridView1.DataBind();
dr.Close();

cmd.CommandText = "aspnet_Membership_GetAllUsers";
是写的你的存储过程的名称就行了,
cmd.CommandType = CommandType.StoredProcedure;这个就代表执行的是存储过程
而如果是cmd.CommandType = CommandType.Text;这也是默认的,这样就是执行的SQl语句
所以这样是可以的

ParameterDirection.ReturnValue这个就是取返回结果的Label1.Text 值就是返回值
panyuan911 2010-04-06
  • 打赏
  • 举报
回复
问题是里面还有一条查询语句呢。

SqlConnection conn = new SqlConnection(SqlHelper.SqlConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "aspnet_Membership_GetAllUsers";
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@ApplicationName", "CFPhoto");
cmd.Parameters.AddWithValue("@PageIndex", ThisPage);
cmd.Parameters.AddWithValue("@PageSize", PageSize);
cmd.Parameters.Add("@RETURN_VALUE","").Direction = ParameterDirection.ReturnValue;
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();//获取查询语句结果
Label1.Text = cmd.Parameters["@RETURN_VALUE"].Value.ToString();
GridView1.DataSource = dr;
GridView1.DataBind();
dr.Close();


难道要这样?

SqlConnection conn = new SqlConnection(SqlHelper.SqlConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "aspnet_Membership_GetAllUsers";
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@ApplicationName", "CFPhoto");
cmd.Parameters.AddWithValue("@PageIndex", ThisPage);
cmd.Parameters.AddWithValue("@PageSize", PageSize);
cmd.Parameters.Add("@RETURN_VALUE","").Direction = ParameterDirection.ReturnValue;
conn.Open();
cmd.ExecuteNonQuery();//先执行一遍
SqlDataReader dr = cmd.ExecuteReader();//再执行一遍
Label1.Text = cmd.Parameters["@RETURN_VALUE"].Value.ToString();
GridView1.DataSource = dr;
GridView1.DataBind();
dr.Close();

看着很不爽。
cyx1225 2010-04-06
  • 打赏
  • 举报
回复
支持3楼 …只是代码有点长了


cmd.Parameters.Add("@RETURN_VALUE", "").Direction=ParameterDirection.ReturnValue; //添加获得返回值的参数
try
{
conn.Open();
cmd.ExecuteNonQuery();
iRet = (int)cmd.Parameters["@RETURN_VALUE"].Value; //获得返回值的地方
}

SAP道长 2010-04-06
  • 打赏
  • 举报
回复
lou shang de.
criedshy 2010-04-06
  • 打赏
  • 举报
回复
public static int User_Add(User us)
{
int iRet;
SqlConnection conn = new SqlConnection(Conn_Str);
SqlCommand cmd = new SqlCommand("User_Add", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@UName", us.UName);
cmd.Parameters.AddWithValue("@UPass", us.UPass);
cmd.Parameters.AddWithValue("@PassQuestion", us.PassQuestion);
cmd.Parameters.AddWithValue("@PassKey", us.PassKey);
cmd.Parameters.AddWithValue("@Email", us.Email);
cmd.Parameters.AddWithValue("@RName", us.RName);
cmd.Parameters.AddWithValue("@Area", us.Area);
cmd.Parameters.AddWithValue("@Address", us.Address);
cmd.Parameters.AddWithValue("@ZipCodes", us.ZipCodes);
cmd.Parameters.AddWithValue("@Phone", us.Phone);
cmd.Parameters.AddWithValue("@QQ", us.QQ);
cmd.Parameters.Add("@RETURN_VALUE", "").Direction=ParameterDirection.ReturnValue;
try
{
conn.Open();
cmd.ExecuteNonQuery();
iRet = (int)cmd.Parameters["@RETURN_VALUE"].Value;
}
catch (SqlException ex)
{
throw ex;
}
finally
{
conn.Close();
}
return iRet;
}
panyuan911 2010-04-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ck11926375 的回复:]
ParameterDirection.ReturnValue
[/Quote]
具体怎么用?谢谢
ck11926375 2010-04-06
  • 打赏
  • 举报
回复
ParameterDirection.ReturnValue

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧