コースが満杯の場合、次の生徒は1,2,3などのようになります(0 =ライン内になく、ブール値Accepted
生徒がコースに入っていることを意味します)。生徒がコースをやめると、コーステーブルにフリースポットができます。C言語でif-statementを使用してUPDATEを使用して特定の行(sql)を更新する
しかし、C#とOleDbCommand
を使用して、コーステーブルに空きがあると、どのようにすべての学生行を更新できますか?私はすべての生徒にフリースポットごとに1つの値を少なくしたいと思っています。待ち行列1に入っていた学生(キュー0に近づいている)の場合は、Accepted
ブール値をtrueに更新します。
私の問題:
私はすべての学生キューインデックスを更新すると、「--1」各フリースポットについて。
私は学生がキューインデックス0
をヒットしようとするとき、私は方法がわからない、Accepted = true
ブールし、キューインデックス1に、特定の学生を変更する方法がわかりませんdbとC#を正しく組み合わせる方法がわからないので、これを行うには。
これは私が行くことができるどこまである:
は、以下の最初のコードは、私はC#で、私は確認することができますどのように言い換えれば
//-----------------------------
//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();
}
を、SELECTを経由してのコースの金額に無料スポットを数え、リーダーOleDBCommand
などを使用して、更新する前に特定の値をチェックしますか?類似のものがありますかRead.Reader
方法はありますか?私はどこで行を確認できますか?正直言って、私は完全にここで失われています。
クエリに**パラメータ**を使用するようにしてください - いくつかのパラメータを使用していますが、 'CourseID'はあなたのSQLと連結されています - **これをしないでください!** 「CourseID」にも! –
AAHは知っておいてよろしいですか? – Nyprez