为什么我从此代码中收到CS1502(无效参数)错误?

时间:2014-02-28 19:58:03

标签: c# oracle visual-studio-2012

我正面临这个问题,我不知道背后的原因。这是Visual Studio报告的错误:

  

'PostForum.INSERTforum(int,string,string,System.DateTime)'的最佳重载方法匹配有一些无效的参数

我正在使用Oracle来存储我的数据,还创建了一个名为INSERTFORUM的过程。我不确定我是否有存储过程或其他问题。请帮我解决这个问题。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Forum : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        string course_Id = DropDownList1.Text;
        int ccourse_Id = Convert.ToInt32(course_Id);
        string question = TextBox1.Text;
        string posterName = TextBox2.Text;
        DateTime blog_date = DateTime.Now;
        PostForum.INSERTforum(course_Id, question, posterName, blog_date);
    }
}

代码:Postforum.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;

public class PostForum
{
    public static int INSERTforum(int course_Id, string question, string posterName, DateTime blog_date)
    {
        int rowsAffected = 0;

        using (SqlConnection connection = ConnectionManager.GetDatabaseConnection())
        {
            SqlCommand command = new SqlCommand("INSERTforum", connection);
            command.CommandType = CommandType.StoredProcedure;

            command.Parameters.Add("@course_Id", SqlDbType.Int).Value = course_Id;
            command.Parameters.Add("@question", SqlDbType.VarChar).Value = question;
            command.Parameters.Add("@posterName", SqlDbType.VarChar).Value = posterName;
            command.Parameters.Add("@blog_date", SqlDbType.DateTime).Value = blog_date;

            rowsAffected = command.ExecuteNonQuery();
        }
        return rowsAffected;   
    }
}

1 个答案:

答案 0 :(得分:3)

INSERTforum期望将int作为第一个参数。你传给它一个字符串。更正INSERTforum的调用以阅读:

PostForum.INSERTforum(ccourse_Id, question, posterName, blog_date);

请注意,如果DropDownList1.Text无法解析为整数,则会失败。

不要忘记查看Visual Studio中的“错误列表”选项卡。你看到的错误只是第一次 - 下一个错误会给你我提供的信息。