【问题标题】:Incrementing a value of a field in the table by button click通过单击按钮增加表中字段的值
【发布时间】:2014-07-07 17:13:49
【问题描述】:

我目前正在开展一个已实施投票的项目。

现在,在我的数据库中,我有一个名为 options 的表,有 2 列 optionId(bigint) 和 count(bigint),计数的默认值为所有行中的 0。 我想通过单击按钮来增加特定的计数字段。

例如,我必须增加具有 optionId =(通过的某个数字)的计数值(用于投票特定选项

我正在使用存储过程来执行此操作,但不幸的是,所有行都在递增

我只想更新一行

这是在按钮点击时触发的代码

Int32 optionid = Convert.ToInt32(RadioButtonList1.SelectedValue); 使用 (SqlConnection Conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ManagerConnectionString"].ConnectionString)) { Conn.Open(); incrementTheVote.incrementVote(optionid); }

这是我在其中调用存储过程的类(incrementTheVote)的定义

公共类增量投票 { 公共静态 int incrementVote(int optionid) { int rowsaffected = 0; 使用 (SqlConnection Conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ManagerConnectionString"].ConnectionString)) { Conn.Open(); SqlCommand cmd = new SqlCommand("incrementVote", Conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@optionid", SqlDbType.Int).Value = optionid; rowsaffected = cmd.ExecuteNonQuery(); } 返回受影响的行; } }

这是存储过程

改变程序增量投票 ( @optionid 大整数 ) 作为 开始交易 从 optionid = @optionid 的选项中选择投票 更新选项 SET 票数 = 票数 + 1 提交交易

【问题讨论】:

    标签: asp.net sql-server sql-server-2008 tsql stored-procedures


    【解决方案1】:

    你离得太近了! 您需要在更新语句中添加 where 子句。
    此外,更新可以引用它们的旧值,因此无需创建中间变量@votes。

    ALTER PROCEDURE incrementVote
        (
        @optionid bigint
        )
    AS
    BEGIN TRANSACTION
    
    UPDATE options
    SET votes = votes + 1 
    Where optionid = @optionid
    
    COMMIT TRANSACTION
    

    【讨论】:

    • 这就是答案。接受它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    • 2019-08-21
    • 2014-09-20
    • 2011-07-15
    • 1970-01-01
    • 2015-01-29
    相关资源
    最近更新 更多