繁体   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