2011-04-01 68 views
0

我有一個包含用戶名和「點」的數據庫。我需要隨意增加「積分」。我把表連接到一個sqldatasource。通過asp.net在sql表中增加一個條目1

這裏是我當前的代碼:

With Users 
     .UpdateCommand = "UPDATE Users SET points = points + 1" 
     .Update() 
    End With 

這個偉大的工程,除了,而不是僅僅改變由查詢字符串指定的用戶名進入,它改變了所有條目,並增加了一個。

在SqlDataSource具有下列選擇命令:

SelectCommand="SELECT * FROM [Users] WHERE ([username] = @username)" 

此命令使它,以便僅顯示與查詢字符串指定的用戶名的條目。這真是我第一次嘗試SQL。任何想法或解決方案,將不勝感激。

- 編輯 -

感謝您的幫助俄德,這裏是我的最終解決方案,工作 :)

With Users 
    .UpdateParameters.Add(New Parameter("username", System.Data.DbType.String, My.Request.QueryString("username"))) 
    .UpdateCommand = "UPDATE Users SET points = points + 1 WHERE ([username] = @username)" 
    .Update() 
End With 
+0

我不在你的命令中看到一個WHERE,那它應該怎麼知道它有什麼更新?即使SelectCommand指定用戶名,Update命令也不會。 – Hallaghan 2011-04-01 13:04:55

+0

是的,這就是爲什麼我問,這是我第一次使用實際的SQL命令。 – FreeSnow 2011-04-01 13:12:50

回答

4

您需要指定只有該用戶的行應該是更新:

.UpdateCommand = "UPDATE Users SET points = points + 1 WHERE ([username] = @username)" 

如果未指定WHERE子句,則正如您所見,將應用於所有現有行。


編輯:

這是如何添加一個用戶名參數的例子:

.UpdateCommand.Parameters.Add("@username", SqlDbType.NVarChar, 40, "The User Name"); 
+0

噢,好的。我想這是有道理的。謝謝! – FreeSnow 2011-04-01 13:11:42

+0

它現在拋出這個異常:'必須聲明標量變量「@username」。「 – FreeSnow 2011-04-01 13:14:23

+1

@DalexL - 您需要將用戶名作爲參數傳遞,與「SelectCommand」完成的方式相同。 – Oded 2011-04-01 13:16:44

1

where子句添加到您的更新命令:

UpdateCommand = "UPDATE Users SET points = points + 1 WHERE ([username] = @username)" 
+0

你先回答了這個問題,但是在這裏解釋了一點。這是一個投票。 :) – FreeSnow 2011-04-01 13:12:22