& # 39; System.IndexOutOfRangeException& # 39;关于数据库提交

本文关键字:数据库 提交 System IndexOutOfRangeException | 更新日期: 2023-09-27 18:11:56

我有一个表格,让人们把自己添加到等待名单中。除了最后一个参数外,所有表单信息都被正确提交。它一直抛出这个异常

的通讯。参数["@DayofWeek"]'抛出类型为'System '的异常。IndexOutOfRangeException '

它是来自RadioButtonList的输入。关于这个主题的所有其他线程,我能找到似乎是轻微的语法错误,但在盯着这个最后一天,我看不到任何。但我可能需要更有经验的人。或者是问题与我的集合的单选按钮列表值在字符串?

protected void submitButton_Click(object sender, EventArgs e)
        {
            if(Page.IsValid)
            {
                string dayWeek = dayofweek.SelectedValue;
                SqlConnection conn;
                SqlCommand comm;
                string connectionString = ConfigurationManager.ConnectionStrings["HutWaitList"].ConnectionString;
                conn = new SqlConnection(connectionString);
                comm = new SqlCommand("INSERT INTO waitList (FirstName, LastName, Email, StartDate, EndDate, Spaces, DayofWeek) Values(@FirstName, @LastName, @Email, @StartDate, @EndDate, @Spaces, @DayofWeek)",conn); 
                comm.Parameters.Add("@FirstName", System.Data.SqlDbType.NVarChar, 50);
            comm.Parameters["@FirstName"].Value = firstname.Text;
                comm.Parameters.Add("@LastName", System.Data.SqlDbType.NVarChar, 50);
            comm.Parameters["@LastName"].Value = lastname.Text;
                comm.Parameters.Add("@Email", System.Data.SqlDbType.NVarChar, 50);
            comm.Parameters["@Email"].Value = email.Text;
                comm.Parameters.Add("@StartDate", System.Data.SqlDbType.Date);
            comm.Parameters["@StartDate"].Value = DateTime.Parse(startdate.Text).Date;
                comm.Parameters.Add("@EndDate", System.Data.SqlDbType.Date);
            comm.Parameters["@EndDate"].Value = DateTime.Parse(enddate.Text).Date;
                comm.Parameters.Add("@Spaces", System.Data.SqlDbType.NVarChar, 50);
            comm.Parameters["@Spaces"].Value = numspaces.Text;
                comm.Parameters.Add("@DayofWeek", System.Data.SqlDbType.NVarChar, 50);
            comm.Parameters["@DayofWeek"].Value = dayWeek;

                try
            {
                conn.Open();
                comm.ExecuteNonQuery();
            }
            catch
            {
                dbErrorMessage.Text = "There was an error submitting your waitlist information.";
            }
            finally
            {
                conn.Close();
            }
           }
        }

& # 39; System.IndexOutOfRangeException& # 39;关于数据库提交

为什么不一次性添加呢?

cmd.Parameters。AddWithValue("@months",nMonths);

不需要指定类型,只要传入的类型与数据库中的类型兼容即可。这也将简化维护。您不必每次更改表定义时都更改代码。

我想这算一个答案,因为我得到了这个工作。最后只是尝试"重建解决方案",它解决了这个问题,另一个我一直试图弄清楚。我是ASP.net的新手,大部分时间都是自学的,所以我甚至没有意识到这可能是一个选项或可能的解决方案,直到我开始注意到调试器移动我的断点,并将重建解决方案列为可能的解决方案。

这将更有效,并可能解决您的问题,做所有在一行:

comm.Parameters.Add("@DayofWeek", System.Data.SqlDbType.NVarChar, 50).Value = dayWeek;

您可以对所有参数执行此操作,并在每个Add之后保存查找。