SQL更新列通过向当前Int添加数字

时间:2014-01-22 19:36:40

标签: sql sql-server vb.net sqlcommand

很简单,我无法弄清楚如何从文本框中添加(即+)一个整数到SQL字段中的整数。

因此,例如,SQL字段中可能包含“10”,文本框中可能包含“5”。我想将这些数字加在一起以存储'15'而无需下载SQL表。

包含要添加到SQL整数的整数的文本框是tranamount.Text,SQL表中的SQL列是@ugpoints。请注意,没有“+” - 这是在下面的代码中,并且确实是错误的 - tranamount.Text的值被添加到表中而没有问题,但它只是替换原始值;意味着最终结果在SQL字段中为'5'。

构建这个的正确方法是什么?我已经尝试了以下代码,但这显然不起作用。

cmd = New SqlCommand("UPDATE PersonsA SET U_G_Studio=@ugpoints WHERE Members_ID=@recevierID", con)

cmd.Parameters.AddWithValue("@recevierID", tranmemberID.Text)
cmd.Parameters.AddWithValue("@ugpoints", + tranamount.Text) '<--- Value to add.
cmd.ExecuteNonQuery()

新手问题我知道,我是vb中的SQL新手。

4 个答案:

答案 0 :(得分:1)

你必须使用正确的sql:

Dim sql = "UPDATE PersonsA SET U_G_Studio=U_G_Studio + @ugpoints WHERE Members_ID=@recevierID"

同时使用AddWithValue的正确类型:

Using cmd = New SqlCommand(sql, con)
    ' use the using-statement to dispose everything that implements IDisposable, so also the connection '
        cmd.Parameters.AddWithValue("@ugpoints", Int32.Parse(tranamount.Text)) 
    ' .... '
End Using

答案 1 :(得分:0)

您想要的SQL是:

"UPDATE PersonsA SET U_G_Studio= (U_G_Studio + @ugpoints) " & _
"WHERE Members_ID=@recevierID"

答案 2 :(得分:0)

获取U_G_Studio字段的当前值,添加参数的值并重新分配给U_G_Studio,但请记住,您需要将值作为整数传递,否则AddWithValue 1}}将传递一个字符串,你会得到来自db的转换错误。

    cmd = New SqlCommand("UPDATE PersonsA SET U_G_Studio=U_G_Studio + @ugpoints " & 
                         "WHERE Members_ID=@recevierID", con)
    cmd.Parameters.AddWithValue("@recevierID", tranmemberID.Text)
    cmd.Parameters.AddWithValue("@ugpoints", Convert.ToInt32(tranamount.Text))
    cmd.ExecuteNonQuery()

答案 3 :(得分:0)

怎么样

cmd.Parameters.AddWithValue("@ugpoints",  (int)tranamount.Text) 
....
cmd = New SqlCommand("UPDATE PersonsA SET U_G_Studio= SET U_G_Studio + @ugpoints WHERE Members_ID=@recevierID", con)

编辑1:史蒂夫更快!