我正在尝试将多条记录插入 SQL 数据库。SQL 表包含smalldatetime
列。每条记录都是一小时的时间,所以当你想插入时间跨度时,例如。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!"); }
}
执行一小时时,一切顺利,但在任何时间跨度内,它都会崩溃。几个小时的命令文本字符串是这样的:
INSERT INTO Reservations (resClassID, resPersonID, resStart) VALUES (@class, @person, @start), (@class1, @person1, @start1), (@class2, @person2, @start2), (@class3, @person3, @start3)
但是,我再次收到这种类型的错误消息:
',' 附近的语法不正确。
谁能弄清楚是什么问题?