2013-03-17 29 views
0

我在我的aspx頁面中獲得了以下sql查詢來更新我在phpmyadmin中的數據庫。我的軟件是的Visual Web Developer 2010asp.net存儲數據庫中用戶是數據庫時得分的總和

cmd = connection.CreateCommand(); 
      cmd.CommandText = "UPDATE (userscore) SET score = @score WHERE username = @username"; 
      cmd.Parameters.AddWithValue("@username", username); 
      cmd.Parameters.AddWithValue("@score", userscore); 
      var numRowsAffected = cmd.ExecuteNonQuery(); 
      if (numRowsAffected == 0) 
      { 
       cmd.CommandText = "INSERT INTO userscore (username, score)VALUES(@username, @score)"; 
       cmd.ExecuteNonQuery(); 
      } 

這個查詢增加了一個用戶名加上在數據庫中,當比分具體的用戶名不是在數據庫中還沒有。這就是我想要的。但是當例如用戶名admin在數據庫中的分數爲-1(在我的應用程序中,您可以投票+1或-1),並且他得到另一票+1,我想存儲總和值(在此case -1 + 1 = 0)作爲新分數,並刪除舊值,在本例中爲-1。

回答

0

我只是將你的「upsert」代碼包裝到存儲過程中,並傳遞用戶標識和分數遞增/遞減。

您當前的代碼不更新比分,但簡單地覆蓋它不管你進入它

create proc SetUserScore 
@UserName nvarchar(100), 
@ScoreChange int 
AS 
BEGIN 
    IF EXISTS(SELECT 1 FROM userscore WHERE username = @UserName) 
    BEGIN 
     UPDATE userscore 
     SET score = score + @ScoreChange 
     WHERE username = @UserName 
    END 
    ELSE 
    BEGIN 
     INSERT INTO userscore (username, score)VALUES(@username, @score) 
    END 

END 
+0

日Thnx FO的答覆,但我在哪裏都放在我的aspx文件這個存儲過程? – Sybren 2013-03-17 08:18:17

+0

當我在mysql命令行輸入這個命令時,它會顯示:ERROR 1046(3D000):沒有選擇數據庫? – Sybren 2013-03-17 14:36:57

+0

我沒有意識到你正在使用MySQL,因此請標記你的問題。我的代碼將在SQL Server中創建一個存儲過程;不知道你如何在MySQL – 2013-03-18 01:48:34