簡體   English   中英

如何在sql c中增加一個整數#

[英]how to increment an integer in sql c#

我正在制作投票系統。 我在向他們投票的每個候選人添加一個計數(每次候選人投票時增加)時遇到問題。

我的投票按鈕代碼是:

    sc.Open();
        try
        {
            cmd = new SqlCommand("UPDATE TableVote SET Vcount=Vcount+1 WHERE id=@count", sc);

            cmd.Parameters.AddWithValue("@count", TxtPresID.Text);

            int res = cmd.ExecuteNonQuery();
            if (res > 0)
            {
                MessageBox.Show(TxtPresID.Text.ToString() + " Saved!");
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        finally
        {
            sc.Close();
        }

我的桌子是

我的sql

Vcount的結果只是NULL ..

空值

我究竟做錯了什么? 或者我的Sql語句是否正確?

看起來你的VcountNULL 正如其他人指出的那樣,您應該將該列默認設置為0否則您可以執行此操作

UPDATE TableVote SET Vcount=ISNULL(Vcount, 0) + 1 WHERE id=@count

將默認值Vcount設置為0.它不應該是空列。

這是查詢

ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}

ALTER TABLE TableVote 
ADD Vcount int NOT NULL 
CONSTRAINT  tablevote_vcount_default DEFAULT 0

另一種選擇是檢查Vcount是否為NULL

UPDATE TableVote SET Vcount=ISNULL(Vcount, 0) + 1 WHERE id=@count

您不應每次都更新計數行。 如果您同時收到2張投票,則可能會產生不可預測的后果。

更好的方法是讓表格“投票”,然后為每次投票插入一行,包括候選人ID,選民ID和投票日期。 也意味着您可以擁有不同選民的歷史數據,並且您可以根據需要輕松更改投票。

了解這一點

Null + 1 = Null

因此,添加1時,您的Vcount將始終為null。
Vcount必須不可為空,並且它的默認值muste為0.然后當你將1加0時,它會給你帶來好的結果。

您還可以更改SQL語句,以便在VCOUNT-Column為空時使用零:

"UPDATE TableVote SET Vcount=ISNULL(Vcount, 0)+1 WHERE id=@count"

如果您無法將數據庫模式更改為非空並且具有默認值,則此功能尤其有用。

Vcount必須具有默認的0值,而Not Null,cause是一個Int Field。

如果我沒有錯,為什么不使用你的主鍵,

UPDATE TableVote SET Vcount= max(id)  WHERE id=@count

要么

如果某些ID被刪除,您不想保留記錄或計算刪除的投票

  UPDATE TableVote SET Vcount= COUNT(id)  WHERE id=@count

暫無
暫無

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

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