我的代码跳过一个函数

时间:2016-01-11 14:10:06

标签: c# webforms

我正在制作一个表单来为我的数据库创建一个项目,但我的代码没有执行功能

代码

public partial class Create : System.Web.UI.Page
    {
        Leraren leraar;

        protected void Page_Load(object sender, EventArgs e)
        {

                if (Request.Form["edit"] != null)
                {
                    create();
                }
        }
        private void create()
        {
            string naam = Request.Form["txt_naam"];
            string voornaam = Request.Form["txt_voornaam"];
            string email = Request.Form["txt_email"];
            string foto = Request.Form["txt_foto"];

            try
            {
                leraar = new Leraren();
                leraar.CreateTeacher(naam, voornaam, email, foto);

                Response.Redirect("../Wie.aspx");
            }
            catch (Exception ex)
            {
                Response.Write("U hebt wat lege velden");
            }


        }
    }

它从字段中获取信息,此时调试器停止

 leraar.CreateTeacher(naam, voornaam, email, foto);

但它没有执行此功能并直接进入此功能

Response.Write("U hebt wat lege velden");

完成后

catch (Exception ex)
{
    Response.Write("U hebt wat lege velden. Exception = " + ex);
}

这是结果

U hebt wat lege velden, Exception = System.IndexOutOfRangeException: An SqlParameter with ParameterName '@achternaam' is not contained by this SqlParameterCollection. at System.Data.SqlClient.SqlParameterCollection.GetParameter(String parameterName) at System.Data.SqlClient.SqlParameterCollection.get_Item(String parameterName) at WFtyas.Leraren.CreateTeacher(String naam, String voornaam, String email, String foto) in C:\Users\Tyas\Dropbox\School\'15-'16\Bestanden\programmeren 2\WFtyas\WFtyas\App_Code\Leraren.cs:line 77 at WFtyas.intranet.leraren.Create.create() in C:\Users\Tyas\Dropbox\School\'15-'16\Bestanden\programmeren 2\WFtyas\WFtyas\intranet\leraren\Create.aspx.cs:line 32

ps:抱歉我的英文不好

1 个答案:

答案 0 :(得分:2)

您的功能发生异常。您需要打印异常消息才能调试错误,因为您正在吞下异常消息本身并丢失所有可能有用的信息。

将catch块更改为以下内容,以便在错误消息中显示异常:

catch (Exception ex)
{
    Response.Write("U hebt wat lege velden. Exception = " + ex);
}

在整个代码和函数中设置断点以进行调试,并准确找到导致异常发生的原因。

编辑以回应更新的问题:

来自您的异常消息

  

此SqlParameterCollection不包含带有ParameterName'@achternaam'的SqlParameter

这表示您正在执行SQL查询,并且在查询中指定了@achternaam,但您尚未将其作为参数添加到查询中。