& # 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();
}
}
}
为什么不一次性添加呢?
cmd.Parameters。AddWithValue("@months",nMonths);
不需要指定类型,只要传入的类型与数据库中的类型兼容即可。这也将简化维护。您不必每次更改表定义时都更改代码。
我想这算一个答案,因为我得到了这个工作。最后只是尝试"重建解决方案",它解决了这个问题,另一个我一直试图弄清楚。我是ASP.net的新手,大部分时间都是自学的,所以我甚至没有意识到这可能是一个选项或可能的解决方案,直到我开始注意到调试器移动我的断点,并将重建解决方案列为可能的解决方案。
这将更有效,并可能解决您的问题,做所有在一行:
comm.Parameters.Add("@DayofWeek", System.Data.SqlDbType.NVarChar, 50).Value = dayWeek;
您可以对所有参数执行此操作,并在每个Add之后保存查找。