私は待機リストに自分自身を追加するためのフォームを持っています。最後のパラメータを除いて、すべてのフォーム情報が正しく送信されます。それがRadioButtonListのからの入力の 'System.IndexOutOfRangeException'データベース提出時に 'System.IndexOutOfRangeException'が発生しました
'comm.Parameters [ "@のDAYOFWEEKは、"]' タイプの例外をスローした
をこの例外をスローし続けます。 このトピックの他のスレッドはすべて、軽微な構文エラーであるように見えましたが、最終日にこれを見つめた後、私は何も見えません。しかし、私は経験豊富な目を必要とするかもしれません。または、文字列内の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();
}
}
}
dayWeekの値がパラメータとして割り当てられているのを確認しましたか?おそらく後続の空白などで長さが長くなることがありますか?RadioButtonListから来るdayWeekの値を投稿できますか? – inan
waitListテーブルにDayOfWeek列NVarChar 50ですか? –
アドバイスをいただきありがとうございます。私はC#を初めて使っているので、まだ最良のフォーマット/プラクティスを手に入れていない。私は "AddWithValue"形式を使用してコードをクリーンアップし、同じ問題が発生します。私はテーブルをダブルチェックして、カラムに正しいタイプと名前が設定されています。もう1つの奇妙なことは、デバッガで関数をステップ実行すると、DayofWeekを使ってその行をスキップし、例外を取得するためにもう一度やり直す必要があることです。 – HiCntry