如果一门课程已满,则下一个学生将排在队列中,1、2、3等(0表示不在队列中,并且布尔值
然而,使用C#和
我的问题:
1. 我想为每个空位更新每个学生的队列索引为“-1”。
2. 当学生即将到达队列索引0时,我不知道如何更改特定学生的队列索引为1,使其布尔值
我不知道如何做到这一点,因为我不知道如何正确地结合数据库和C#。
这是我目前能够做到的:
以下第一段代码,我通过SELECT和reader计算了课程中的空位数量。
换句话说,我该如何在C#中使用OleDBCommand或其他方式,在更新之前检查特定值?是否有类似于Read.Reader方法的东西?我可以在其中检查每一行吗?说实话,我完全迷失了。
Accepted
为true,表示该学生已经选上了这门课程)。如果一位学生退出了课程,则课程表中会有一个空位。然而,使用C#和
OleDbCommand
,一旦课程表中有一个空位,我应该如何更新每个学生的行?我想让每个学生对于每个空位都减少1个值,如果处于队列#1(即将进入队列0的学生),我希望将其Accepted
布尔值更新为true(表示该学生已经选上了这门课程)。我的问题:
1. 我想为每个空位更新每个学生的队列索引为“-1”。
2. 当学生即将到达队列索引0时,我不知道如何更改特定学生的队列索引为1,使其布尔值
Accepted=true
。我不知道如何做到这一点,因为我不知道如何正确地结合数据库和C#。
这是我目前能够做到的:
以下第一段代码,我通过SELECT和reader计算了课程中的空位数量。
//-----------------------------
//SELECT..... WHERE FreeSpots > 0...
int = QueueCount = 0;
while (reader.Read()) {
QueueCount = ++QueueCount;
};
//----------------------------
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.CommandText = "UPDATE [Course_Student] SET QueueIndex = @queueindex, Accepted = @accepted WHERE QueueIndex > 0 AND CID = " + CourseID + ";";
cmd.Connection = conn;
while (QueueCount > 0) {
if (/*HELP: how do I check specific student with QueueIndex = 1?*/ == 1)
{
var pAccepted = new OleDbParameter("@accepted", SqlDbType.Bit);
pAccepted.Value = true;
cmd.Parameters.Add(pAccepted);
} else {
var pAccepted = new OleDbParameter("@accepted", SqlDbType.Bit);
pAccepted.Value = false;
cmd.Parameters.Add(pAccepted);
}
var pQueueIndex = new OleDbParameter("@queueindex", SqlDbType.Int);
pQueueIndex.Value = /*HELP: for every row, --x QueueIndex for every students in queue*/;
cmd.Parameters.Add(pQueueIndex);
FreeSpot = --FreeSpot; //for later, to update freespots in course-table
cmd.ExecuteNonQuery();
}
换句话说,我该如何在C#中使用OleDBCommand或其他方式,在更新之前检查特定值?是否有类似于Read.Reader方法的东西?我可以在其中检查每一行吗?说实话,我完全迷失了。
CourseID
仍然与您的SQL串联在一起 - 不要这样做! 也要为CourseID
使用一个参数! - marc_s