【问题标题】:How do i resolve this procedure or function 'SelectFollow' expects parameter '@userid', which was not supplied.'?如何解决此过程或函数“SelectFollow”需要参数“@userid”,但未提供。”?
【发布时间】:2023-03-28 06:16:03
【问题描述】:

我正在尝试从参数中获取当前用户 ID,并使用存储过程检查它是否存在于数据库表中

public PartialViewResult AllStates(string state, string userid)
{

    SqlCommand cmd = new SqlCommand();
    Following following = new Following();
    cmd.Parameters.Add("@userid", SqlDbType.BigInt).Value = userid;
    List<Farmer> model = db.Farmer.Where(u => u.FarmState == state).Take(3).ToList();
    var modelfollow = db.Following.SqlQuery("[dbo].[SelectFollow]").ToList();
    ViewBag.folo = modelfollow;
    return PartialView("_UsersList", model );
}

这是我的存储过程

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE SelectFollow 
    @userid INT
AS
BEGIN
DECLARE @HasFollowed BIT
    IF EXISTS(SELECT * FROM dbo.Followings Where UserId = @userid)
BEGIN
SET @HasFollowed = 1
END
ELSE
BEGIN
SET @HasFollowed = 0
END
END
GO

我做错了什么吗?

【问题讨论】:

  • 是的...没有将参数传递给存储过程,正如错误消息所说的那样。

标签: c# asp.net-mvc stored-procedures sqlcommand


【解决方案1】:

问题出在这一行,它不包含任何存储过程(SP)参数,而SP需要一个参数,因此抛出了标题中提到的异常:

var modelfollow = db.Following.SqlQuery("[dbo].[SelectFollow]").ToList();

您还向包含空查询字符串的SqlCommand 实例添加参数(之后您不会执行它):

SqlCommand cmd = new SqlCommand();
cmd.Parameters.Add("@userid", SqlDbType.BigInt).Value = userid;

由于您使用的是DbSet.SqlQuery() 方法,您可以通过声明SqlParameter 实例将查询参数作为该方法的第二个参数传递:

public PartialViewResult AllStates(string state, string userid)
{
    // define stored procedure parameter here
    var parameter = new SqlParameter("@userid", SqlDbType.BigInt);
    parameter.Value = userid;

    List<Farmer> model = db.Farmer.Where(u => u.FarmState == state).Take(3).ToList();

    // use stored procedure parameter declared above
    var modelfollow = db.Following.SqlQuery("[dbo].[SelectFollow] @userid", parameter).ToList();
    ViewBag.folo = modelfollow;
    return PartialView("_UsersList", model);
}

【讨论】:

  • 如果您还有其他问题,只需通过链接到此问题来创建一个新问题。如果提供的答案被认为有帮助,您也可以考虑阅读this
  • 好的,但是我如何将问题链接到这个问题
  • 请帮助我如何摆脱这种“您已达到问题限制抱歉,我们不再接受来自此帐户的问题。请参阅帮助中心了解更多信息。”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-09
  • 2020-12-14
  • 2020-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多