如果某个课程已满,则下一个学生将排队等待1,2,3等。(0 =不在行,并且布尔值为Accepted
是真的,这意味着学生在课程中)。如果学生退出课程,课程表中将有一个免费点。使用C#中的if语句通过UPDATE更新特定的行(sql)
但是,如果使用C#和OleDbCommand
,一旦课程表有空位,我如何更新每个学生行?我希望每个学生为每个免费点获得1个值,如果学生在1号队列中(即将达到0号队列),我希望它将Accepted
布尔值更新为true(意味着学生在课程中)。
我的问题:
我想更新每一个学生队列指数“--1”每个自由点。
我不知道如何改变特定学生,以队列索引1,为布尔
Accepted = true
,当学生即将袭击队列索引0
我不知道如何这样做,因为我不知道如何正确地结合数据库和C#。
这是我能走多远:
下面的第一个代码,我通过SELECT计的游离点的过程和读者
//-----------------------------
//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'以及! –
啊,很高兴知道,将做:) – Nyprez