Могу ли я увеличить значение во время обновления базы данных? - PullRequest
0 голосов
/ 29 августа 2011

Могу ли я сделать что-то подобное?

int somevalue=500;
string getUpSql = "UPDATE money FROM bank SET Money= @Money + somevalue WHERE UserId=@UserId";

Я пытаюсь добавить немного денег на счет, который нажимает кнопку

    protected void BtnWork_Click(object sender, EventArgs e)
    {
        MembershipUser currentUser = Membership.GetUser();
        Guid currentUserId = (Guid)currentUser.ProviderUserKey;
string ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
string getUpSql = "UPDATE money FROM bank SET Money= @Money + somevalue WHERE UserId=@UserId";
 using (SqlConnection myConnection = new SqlConnection(ConnectionString))
        {

           SqlCommand myCommand = new SqlCommand(getUpSql, myConnection);
 myConnection.Open();

 myCommand.Parameters.AddWithValue("@Money",SqlDbType.Int); 

 myCommand.ExecuteNonQuery();

            myConnection.Close();
        }

Ответы [ 3 ]

3 голосов
/ 29 августа 2011

Синтаксис для оператора UPDATE для увеличения столбца с именем Money на величину в параметре с именем @somevalue равен

UPDATE  bank
SET     Money = Money + @somevalue /* Can use Money += @somevalue if 2008 */
WHERE   UserId = @UserId
1 голос
/ 29 августа 2011

Вы не увеличиваете значение.Вы устанавливаете его на @Money + somevalue, где @Money равно любому значению SqlDbType.Int.

Измените свой SQL на этот ...

UPDATE money FROM bank SET Money = Money + @somevalue WHERE UserId = @UserId

...и затем установите параметры @somevalue и @UserId следующим образом ...

int somevalue = ... ;
myCommand.Parameters.AddWithValue("somevalue", somevalue);
TypeOfUserId UserId = ... ;
myCommand.Parameters.AddWithValue("UserId", UserId);
1 голос
/ 29 августа 2011

UPDATE money FROM bank SET Money= @Money + somevalue WHERE UserId=@UserId

Вы уверены, что хотите @Money? Если вы хотите увеличить значение, хранящееся в столбце Money, на некоторое значение, вам нужно записать его как Money = Money + @somevalue, и вам нужно связать somevalue в качестве параметра, а не Money.

...