asp.net 调用存储过程 20

建立存储过程:createprocpro_UserChoose@UserIdvarchar(50)='',@UserNamevarchar(20)='',@DepartI... 建立存储过程:
create proc pro_UserChoose
@UserId varchar(50) = '',
@UserName varchar(20) = '',
@DepartId int=0
AS
BEGIN
select * from view_UserInfo
where UserId like case when @UserId='' then UserId else @UserId end
and UserName like case when @UserName = '' then UserName else @UserName end
and DepartId like case when @DepartId = 0 then DepartId else @DepartId end
END

页面调用代码如下:
List<Model.UserInfo> list = new List<Model.UserInfo>();

DataSet ds = new DataSet();
SqlConnection conn =new SqlConnection( ConfigurationManager.AppSettings[0]);
SqlCommand cmd = new SqlCommand("pro_UserChoose", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@UserId",SqlDbType.Char,50);
cmd.Parameters.Add("@UserName", SqlDbType.Char,20);
cmd.Parameters.Add("@DepartId", SqlDbType.Int,4);

cmd.Parameters["@UserId"].Value = userid;
cmd.Parameters["@UserName"].Value = username;
cmd.Parameters["@DepartId"].Value = departid;

conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
while(dr.Read())
{
Model.UserInfo user = new Model.UserInfo();
user.UserId = dr["UserId"].ToString();
user.UserName = dr["UserName"].ToString();
list.Add(user);
}

conn.Close();
dr.Close();

return list;
}

我通过调试,得到那三个参数的值,然后把他拿到数据库中的建的存储过程中运行,明明有记录的,可是结果就是不进while(dr.Read()),取不到值;到底为什么会这样啊?想不通! 各位大侠,谁能帮哈我啊!分儿都给你拉!!!
我已经加设断点,把值给取出来拿到数据库中运行过,的确能够有记录,可是他就不进while,太怪了
展开
 我来答
百度网友d30db49b0
2009-11-10 · TA获得超过602个赞
知道小有建树答主
回答量:221
采纳率:0%
帮助的人:231万
展开全部
如果没有报错,那就在页面调用的开始加个断点,看看userid;username;departid的值是什么。然后在数据库里执行以下存储过程,把三个值带进去试一试,因为在数据库里分析一下会比较直接。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
水斯卜秀慧
2020-05-19 · TA获得超过3659个赞
知道大有可为答主
回答量:3095
采纳率:29%
帮助的人:235万
展开全部
给你看下我的,用的时候很简单,和你拼sql差别不是很大,就一个属性而已Commandtype这个属性storeprocedure就是调用存储过程,text是sql语句,我的sqlhelper.ExecuteNonQuery的参数,
public
static
int
ExecuteNonQuery(string
cmmdText,
CommandType
cmdType,
params
SqlParameter[]
parameters)
{
using
(SqlConnection
con
=
new
SqlConnection(conString))
{
con.Open();
SqlCommand
cmd
=
PrepareCommand(con,
cmmdText,
cmdType,
parameters);
return
cmd.ExecuteNonQuery();
}
}最后一个是参数,如果你的存储过程有参数,就在这里加,eg:SqlHelper.ExecuteNonQuery("过程名",
CommandType.StoredProcedure,new
SqlParameter("参数名字",值));如果没有参数,则SqlHelper.ExecuteNonQuery("过程名",
CommandType.StoredProcedure,
null);
不懂的话请继续说,谢谢采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
user_pyw
2009-11-10 · TA获得超过325个赞
知道小有建树答主
回答量:324
采纳率:0%
帮助的人:278万
展开全部
这个,你确定在代码里边有把值取出来?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式