SQLデータベースに複数のレコードを挿入しようとしています。SQLテーブルにsmalldatetime
列が含まれています。すべてのレコードは1時間の期間であるため、たとえば、のタイムスパンを挿入する場合。5時間、データベースに5つのレコードを入力します。
コードは次のようになります。
int flag = 0;
try{
if (String.Empty.Equals(tboxFromTime.Text)){
MessageBox.Show("Error!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
DateTime n, m;
if (!DateTime.TryParse(tboxFromTime.Text, out n)){
MessageBox.Show("Error!");
return;
}
FormMain.connection.Open();
command = new SqlCommand();
command.Connection = FormMain.connection;
string classParam, personParam, startParam;
classParam = "class";
personParam = "person";
startParam = "start";
command.CommandText = "INSERT INTO Reservations (resClassID, resPersonID, resStart) VALUES (@class, @person, @start)";
command.Parameters.AddWithValue("@class", int.Parse(cboxRoomID.Text.Substring(4)));
command.Parameters.AddWithValue("@person", int.Parse(cboxPersonSelection.Text.Substring(0, 2).Trim()));
command.Parameters.AddWithValue("@start", DateTime.Parse(cboxWeekDate.Text + " " + n.ToShortTimeString() + ":00"));
if (!String.Empty.Equals(tboxToTime.Text)){
if (!DateTime.TryParse(tboxToTime.Text, out m)){
MessageBox.Show("Error!");
return;
}
else if(DateTime.Compare(m.AddHours(-1), n) > 0){
TimeSpan timeDiff = m - n;
int intDiff = timeDiff.Hours;
for (int i = 1; i < intDiff; i++){
classParam = "class" + i.ToString();
personParam = "person" + i.ToString();
startParam = "start" + i.ToString();
command.CommandText += ", " + String.Format("(@{0}, @{1}, @{2})", classParam, personParam, startParam);
command.Parameters.AddWithValue(String.Format("@{0}", classParam), int.Parse(cboxRoomID.Text.Substring(4)));
command.Parameters.AddWithValue(String.Format("@{0}", personParam), int.Parse(cboxPersonSelection.Text.Substring(0, 2).Trim()));
command.Parameters.AddWithValue(String.Format("@{0}", startParam), DateTime.Parse(cboxWeekDate.Text + " " + n.AddHours(i).ToShortTimeString() + ":00"));
}
}
}
flag = command.ExecuteNonQuery();
if (flag == 1) { MessageBox.Show("Uspelo!"); }
}
1時間実行するとすべてうまくいきますが、どの時間帯でもひびが入ります。数時間のコマンドテキスト文字列は次のようになります。
INSERT INTO Reservations (resClassID, resPersonID, resStart) VALUES (@class, @person, @start), (@class1, @person1, @start1), (@class2, @person2, @start2), (@class3, @person3, @start3)
しかし、ここでもこのタイプのエラーメッセージが表示されます。
'、'の近くの構文が正しくありません。
誰かが問題が何であるかを理解できますか?