![](/img/trans.png)
[英]C# SQL: How can I increment an integer value in a database by one on multiple records?
[英]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();
}
我的桌子是
Vcount
的結果只是NULL
..
我究竟做錯了什么? 或者我的Sql語句是否正確?
看起來你的Vcount
是NULL
。 正如其他人指出的那樣,您應該將該列默認設置為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.