【问题标题】:Procedure or function has too many arguments specified C# DotNetNuke过程或函数指定的参数过多 C# DotNetNuke
【发布时间】:2013-08-06 19:28:54
【问题描述】:

我真的在我的智慧结束这里。基本上是因为我对 DotNetNuke 不是很熟悉,而且我正在处理的网站最初不是由我构建的,因此很难找到我需要处理的文件和目录。我到处寻找解决方案,但我似乎无法深入了解它,我相信这可能是一个简单的解决方案。

问题:我有一个用户填写的表单,然后将该数据插入到数据库表中,但我收到了一个错误。

抛出错误:过程或函数 AddFranchiseFollowUp 指定的参数过多。

我已经在这里工作了几天,由于我对 DotNetNuke 不是很熟悉,我不确定是否需要更多信息才能找到解决方案,所以如果是这种情况,我提前道歉。这个源代码不是我写的,这就是我找到它的方式,在开发站点上有这个表单的工作版本,我确保实时站点的数据库与开发站点完全相同。我刚刚通过 FTP 将模块的文件从开发人员复制到了实时站点,但我开始认为我需要复制其他某种文件?我不知道该怎么做,如果这是一个愚蠢的问题,我很抱歉,但我需要以一种或另一种方式解决这个问题。

我还仔细检查了 .ascx.cs 和 .ascx 基本文件中是否存在任何其他违规行为,但似乎无法确定我的错误来自何处。希望我也能得到答案并了解更多信息,感谢所有阅读本文和/或提供解决方案的人!

CodeFile FranchiseEnqDetails.ascx.cs 来源:

using System;
using System.Data.SqlClient;
using DotNetNuke;
using DotNetNuke.Common;
using DotNetNuke.Common.Utilities;
using DotNetNuke.Entities.Modules;
using DotNetNuke.Services.Exceptions;
using DotNetNuke.Services.Localization;
using TemplateParser;
namespace YourCompany.Modules.FranchiseEnqDetails
{
partial class FranchiseEnqDetails : PortalModuleBase
{
    protected void Page_Load(object sender, EventArgs FranchiseEnqDetails)
    {
        if (!IsPostBack)
        {
            hlFile1.Visible = false;
            hlFile2.Visible = false;
            lblSuccessMsg.Visible = false;
        }
    }
   protected void btnSubmit_Click1(object sender, EventArgs e)
    {
        if (INsertFPFranchiseUserDetails())
        {
            btnSubmit.Enabled = false;
            hlFile1.Visible = true;
            hlFile2.Visible = true;
            lblSuccessMsg.Visible = true;
        }
    }
internal bool INsertFPFranchiseUserDetails()
    {
        SqlConnection con = null;
        SqlCommand cmd = null;

        string ConnString = System.Configuration.ConfigurationManager.AppSettings["SiteSqlServer"].ToString();
        try
        {
con = new SqlConnection(ConnString);
            cmd = new SqlCommand();

            //cmd.Parameters.Add(new SqlParameter("@FranchiseEnqName", txtFirstName.Text));
            //cmd.Parameters.Add(new SqlParameter("@FranchiseEnqEmailId", txtEmailAddress.Text));
            //cmd.Parameters.Add(new SqlParameter("@FranchiseEnqPhoneNo", txtPhoneNo.Text));
            //cmd.Parameters.Add(new SqlParameter("@FranchiseEnqStreet", txtStreet.Text));
            //cmd.Parameters.Add(new SqlParameter("@FranchiseEnqCity", txtCity.Text));
            //cmd.Parameters.Add(new SqlParameter("@FranchiseEnqState", txtState.Text));
            //cmd.Parameters.Add(new SqlParameter("@FranchiseEnqZip", txtZip.Text));

                cmd.Parameters.Add(new SqlParameter("@FirstName", txtFirstName.Text));
                cmd.Parameters.Add(new SqlParameter("@LastName", txtLastName.Text));
                cmd.Parameters.Add(new SqlParameter("@EmailAddress", txtEmailAddress.Text));
                cmd.Parameters.Add(new SqlParameter("@Address1", txtAddress1.Text));
                cmd.Parameters.Add(new SqlParameter("@Address2", txtAddress2.Text));
                cmd.Parameters.Add(new SqlParameter("@City", txtCity.Text));
                cmd.Parameters.Add(new SqlParameter("@fpState", txtState.Text));
                cmd.Parameters.Add(new SqlParameter("@Zip", txtZip.Text));
                cmd.Parameters.Add(new SqlParameter("@PhoneNo", txtPhoneNo.Text));

            con.Open();
            cmd.Connection = con;
            cmd.CommandType = System.Data.CommandType.StoredProcedure;
            cmd.CommandText = "dbo.AddFranchiseFollowUp";
            cmd.ExecuteNonQuery();
            con.Close();
            return true;
        }
        catch (Exception ex)
        {
            lblError.Text = ex.Message;
            return false;
        }
        finally
        {
            if (con != null)
            {
                con.Close();
                con.Dispose();
                con = null;
            }

            if (cmd != null)
            {
                cmd.Dispose();

                cmd = null;
            }
        }
    }
  }
}

【问题讨论】:

  • 错误信息描述性足够。在 SQL Server 管理器中打开 AddFranchiseFollowUp 存储过程,并查找其参数。确保您指定相同数量的参数并仔细检查名称。

标签: c# dotnetnuke


【解决方案1】:

如果您的模块是编译模块,仅更改 .CS 文件无济于事,您还需要重新编译模块。

如何判断它是否已编译?查看网站的 BIN 文件夹,看看里面是否有与模块名称匹配的 DLL。

【讨论】:

  • 另外,如果是编译模块,也不一定非得是。您可以只删除 DLL 并将 .cs 文件放在 App_Code 目录中,这将导致更改被 JIT 编译。
猜你喜欢
  • 1970-01-01
  • 2023-03-26
  • 2014-02-08
  • 2017-10-10
相关资源
最近更新 更多