【问题标题】:Parameter count does not match Parameter Value count参数计数与参数值计数不匹配
【发布时间】:2011-02-10 18:44:27
【问题描述】:

我们收到一条服务器错误消息,提示“参数计数与参数值计数不匹配”。有人知道这意味着什么吗?

我们的网站位于将 DotNetNuke 作为 CMS 运行的 ASP.NET Webforms 上。

我已尝试上传旧版本的 web.config 文件,但自从出现错误后,它似乎并没有改变。它不在我们最近上传的任何模块文件中,因为我从今天早上重新上传了我们更改的旧文件。

数据库中的任何更改是否会导致此问题,或者它是否必须源自代码中的错误?

谢谢。

【问题讨论】:

    标签: asp.net ado.net exception-handling web-config dotnetnuke


    【解决方案1】:

    某些 SQL 查询或存储过程指定的参数多于接收到的参数值。

    类似这样的:

    command.CommandText = "EXEC test @a";
    command.Parameters.Add("@a", "a");
    command.Parameters.Add("@b", "b");
    

    即看数据库方案。改变了吗?存储过程是否改变了?

    【讨论】:

    • 有什么方法可以判断是哪个存储过程?
    • @Matt: 转到DotNetNuke.Data.SqlDataProvider.GetPortals(string) 并找出那里正在调用哪个 SP
    • 找到它,结果存储过程 GetPortals 发生了一些变化……对于一个实时站点来说有点可怕。感谢您的帮助!
    【解决方案2】:

    我发现,如果您使用具有默认值的参数,某些库无法处理。

    例如,我们有一个应用程序使用旧版本的 Microsoft 企业库数据访问方法,该方法允许您将参数作为数组传递。

    如果数组中的项目数量与存储过程中的参数数量不完全匹配,则无论某些是否“可选”,它都会失败。

    在这种情况下必须使用直接 ADO.NET 并使用 cmd.Parameters.AddWithValues("@parameterName", value)

    所需存储过程参数的语法。使用此方法时,您不必为“可选”存储过程参数添加命令参数。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,我发现它正在从 MySQLHelper 维护的临时缓存中选择字段。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-31
        • 2012-06-17
        • 1970-01-01
        相关资源
        最近更新 更多