使用C#中的if语句通过UPDATE更新特定行(sql)

奈普雷斯

如果一门课程已满,则下一个学生将排队等候,依次为1,2,3,依此类推。(0 =不排队,并且布尔Accepted值为true,表示该学生正在参加课程)。如果学生退出课程,则课程表中将有一个免费场所。

但是,使用C#和OleDbCommand,一旦课程表有空位,如何更新每个学生行?我希望每个学生的每个空位减少1个值,并且如果正在队列1中的学生(即将到达队列0),我希望它将Accepted布尔值更新为true(表示该学生正在上课)。

我的问题:

  1. 我想将每个空闲点的每个学生队列索引更新为“ --1”。

  2. 我不知道Accepted = true当学生要达到队列索引0时如何将队列索引为1的特定学生更改为boolean

我不知道如何执行此操作,因为我不知道如何正确组合db和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方法吗?在哪里可以检查每一行?老实说,我在这里完全迷路了。

baiyangcao

更改您的sql语句:

UPDATE [Course_Student] 
SET QueueIndex = QueueIndex - 1, 
    Accepted = (CASE QueueIndex WHEN 1 THEN 1 ELSE 0 END)
WHERE QueueIndex > 0 AND CID = @CourseID;

希望这会有所帮助;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当使用INSERT INTO SELECT ... ON DUPLICATE KEY UPDATE ... SQL语句时,MySQL创建新行而不是更新行

使用SQL更新特定行

SQL UPDATE语句始终更新表Microsoft Access中的第一行

使用C#更新JSON文件中存在的特定项目

使用ADODB.Parameters正确使用MS SQL Update语句语法C#吗?

SQL中的语句如何与C#相关

C#中SQL语句转换失败

使用合并语句获取插入和更新的单个计数 - C# 和 SQL Server

使用IF语句更新行

如何在文本文件的特定行中更新特定值C#

使用 C# 更新 SQL Server 中归档的图像

C# - 使用 XML 文件中的数据更新 SQL 表

使用另一个表中的ID更新行的SQL语句

更新行SQL Server中的特定属性

C#使用Swift中的对等语句

如何在C#中使用本地数据库通过SQL Server CE执行SQL语句

如何使用简单的update语句更新表中的varray类型?

UPDATE语句C#中的语法错误

如何通过Powershell或C#使用本地IP远程更新Azure SQL防火墙

通过 C# WPF App 使用 XML 更新和插入 SQL Server 数据库

使用 C# 如何更改 .txt 文件中特定行中的特定字符(基于位置)

使用c#将行插入到SQL中

C#解析SQL语句以查找存储过程中使用的所有INSERT / UPDATE / DELETE表

从C#使用OleDB更新表行

使用if else语句更新mysqli中的一行

使用SQL调用从数据库检索数据后,特定的if else语句。Visual Studios 2015 / C#

通过C#读取特定字符串之后的行

dataReader C#中的SQL更新查询

在 SQL 中的 Update 语句中对 set 内的值使用引号