如何在sql c中增加一个整数#

时间:2013-10-28 15:58:01

标签: c# winforms sql-server-2008

我正在制作一个投票系统。我在向他们投票的每个候选人添加一个计数(每次候选人投票时增加)时遇到问题。

我的投票按钮代码是:

    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();
        }

我的桌子是

my sql

Vcount的结果只是NULL ..

null

我做错了什么?或者我的Sql语句是否正确?

7 个答案:

答案 0 :(得分:4)

您的Vcount似乎是NULL。正如其他人指出的那样,您应该将该列默认为0,或者您可以执行此操作

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

答案 1 :(得分:3)

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 :(得分:3)

您不应每次都更新计数行。如果您同时收到2张投票,可能会产生不可预测的后果。

更好的方法是让表格“投票”,然后为每次投票插入一行,包括候选人ID,选民ID和投票日期。也意味着您可以获得不同选民的历史数据,并且如果需要,您可以轻松更改投票。

答案 3 :(得分:2)

了解

Null + 1 = Null

因此,添加1时,您的Vcount将始终为null Vcount必须不可为空,并且它的默认值muste为0.然后当你将1加0时,它会给你带来好的结果。

答案 4 :(得分:1)

您还可以更改SQL语句,以便在VCOUNT-Column为空时使用零:

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

如果您无法将数据库架构更改为非空并且具有默认值,则此功能尤其有用。

答案 5 :(得分:1)

Vcount必须具有默认的0值,而Not Null,cause是一个Int Field。

答案 6 :(得分:1)

如果我没有错,为什么不使用你的主键,

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

OR

如果某些ID被删除,而您不想保留记录或计算已删除的投票,那么

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