【问题标题】:No overload for method 'GetKennel' takes 1 arguments c#方法'GetKennel'没有重载需要1个参数c#
【发布时间】:2013-04-17 14:26:41
【问题描述】:

刚刚掌握了 c# 的基础知识,所以如果这是一个简单的修复/没有正确解释,我提前道歉

故事目标:制作一个从 sql 连接信息的 UI

问题:如标题所述错误,尽我所知尝试修复它,绕过它等等。

当用户选择“查看狗窝”时,我想做的是在 UI 面板中显示狗窝的结果

理论上应该是这样的:

狗窝名称 [txtbox "example"]
地址1 [txtbox“示例”]
等等等等……

 private void **Kennel_Load(object sender, EventArgs e)**    <-------Error
{
  DataTable dt = _kennelDAL.GetKennel(_kennelDAL);
  if (dt.Rows.Count > 0)
  {
    DataRow row = dt.Rows[0];
    txtKennelName.Text = row["Name"].ToString();
    txtAddress1.Text = row["Address1"].ToString();
    txtAddress2.Text = row["Address2"].ToString();
    txtAddress3.Text = row["Address3"].ToString();
    txtPostcode.Text = row["Postcode"].ToString();
    txtCapacity.Text = row["Capacity"].ToString();

  }
}

此代码定义来自...

    public DataTable GetKennel(string name, string address1, string address2, string address3,string postcode, int capacity)
{
    DataTable dt = new DataTable();
    //Code here
    using (SqlConnection con = new SqlConnection(ConnectionString))
    {
        SqlCommand cmd = new SqlCommand("[dbo].[Kennel_SelectByID]", con);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@Kennel_Name", name);
        cmd.Parameters.AddWithValue("@Kennel_Address1", address1);
        cmd.Parameters.AddWithValue("@Kennel_Address2", address2);
        cmd.Parameters.AddWithValue("@Kennel_Address3", address3);
        cmd.Parameters.AddWithValue("@Kennel_postcode", postcode);
        cmd.Parameters.AddWithValue("@Kennel_capacity", capacity);
        SqlDataAdapter sda = new SqlDataAdapter(cmd);
        sda.Fill(dt);
    }
    return dt;

如果这个问题有问题,再次道歉,只是在这个问题上停留了很长一段时间! 干杯

【问题讨论】:

    标签: c# arguments overloading


    【解决方案1】:

    你想用

    DataTable dt = _kennelDAL.GetKennel("MyName", "MyAddress1", "MyAddress2", "MyAddress3", "MyPostCode", 10);
    

    【讨论】:

    • 感谢它的工作,但是当启动 UI 时它出现了:
    • SqlException 未处理,过程或函数 kennel_selectbyID 指定的参数过多。
    • @PhilipGullick,这是一个全新的问题,请不要将其标记到您当前的问题上,这也表明您的存储过程 [Kennel_SelectByID] 存在问题。你给它太多的论据。用上面的代码和你的存储过程的代码发布一个新问题。
    【解决方案2】:

    DataTable dt = _kennelDAL.GetKennel(_kennelDAL);

    无论_kennelDAL 是什么,您都使用一个参数调用它。

    但是,您已将此方法定义为具有多个参数:

    public DataTable GetKennel(string name, string address1, string address2, string address3,string postcode, int capacity)
    

    您必须将它们传入(即,物理上名称地址等),或者创建一个接受任何@的重载987654324@是。

    【讨论】:

      【解决方案3】:

      错误说明了问题所在:

      你有一个方法 - 在你的例子中 - 需要六个参数,但你只用一个 (_kennelDAL) 调用它。

      你的电话应该看起来更像这样:

      DataTable dt = _kennelDAL.GetKennel(textBoxName.Text, textBoxAddress1.Text,
                                          textBoxAddress2.Text, textBoxPostCode.Text
                                          textBoxCapacity.Text);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多