簡體   English   中英

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

[英]Update a specific row(sql) via UPDATE using if-statement in C#

如果一門課程已滿,下一位學生將排隊等候,1,2,3等。(0 =不在線,布爾Accepted為真,意味着學生在課程中)。 如果學生退出課程,課程表中將有一個免費點。

但是,使用C#和OleDbCommand ,如果課程表有免費地點,我如何更新每個學生行? 我希望每個學生每個免費地點獲得1個值減去,如果隊列#1(即將排隊0),我希望它將Accepted boolean更新為true(意味着學生在課程中)。

我的問題:

  1. 我想將每個學生隊列索引更新為每個免費點的“--1”。

  2. 當學生即將命中隊列索引0時,我不知道如何將具有隊列索引1的特定學生更改為布爾值Accepted = true

我不知道怎么做,因為我不知道如何正確地組合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方法? 哪里可以檢查每一行? 說實話,我完全迷失在這里。

更改你的sql語句:

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

希望這可以幫助;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM