2012-03-29 75 views
2

我有一個表格叫Town,它包含玩家和玩家建築物之間的關係。該表具有這些列: 用戶ID(INT) buildingid(INT) 號(INT)在SQL c中不能更新表格#

我已經成功地插入了玩家一個全新的建築,現在我有麻煩更新特定行的球員。

我有這樣的代碼:如果一個球員已經與給定的ID,否則爲假建築

if (!existPlayerBuilding(userid, buildingid)) 
      { 
       SqlConnection sqlcon = new SqlConnection(connectionString); 
       string query = "INSERT INTO Town VALUES(@userid, @buildingid, @number)"; 
       SqlCommand sqlcom = new SqlCommand(query, sqlcon); 

       sqlcom.Parameters.Add("@userid", userid); 
       sqlcom.Parameters.Add("@buildingid", buildingid); 
       sqlcom.Parameters.Add("@number", number); 

       try 
       { 
        sqlcon.Open(); 
        sqlcom.ExecuteNonQuery(); 
        sqlcon.Close(); 
       } 
       catch (Exception i) 
       { 
        lblTestlabel.Text = "SQL FEILET"; 
       } 
       lblTestlabel.Text = "Bygningen ble kjøpt!!!!"; 
      } 
      else 
      { 
       SqlConnection sqlcon = new SqlConnection(connectionString); 
       string query = "UPDATE Town VALUES(@userid, @buildingid, @number) WHERE userid = @userid AND buildingid = @buildingid"; 
       SqlCommand sqlcom = new SqlCommand(query, sqlcon); 

       sqlcom.Parameters.Add("@userid", userid); 
       sqlcom.Parameters.Add("@buildingid", buildingid); 
       sqlcom.Parameters.Add("@number", number); 

       try 
       { 
        sqlcon.Open(); 
        sqlcom.ExecuteNonQuery(); 
        sqlcon.Close(); 
       } 
       catch (Exception i) 
       { 
        lblTestlabel.Text = "SQL FEILET"; 
       } 
       lblTestlabel.Text = "Bygningen ble kjøpt!!!!"; 
      } 

的existPlayerBuilding方法返回true。當我運行並測試如果我可以更新一個用戶建設的號碼什麼也沒有發生。

+0

這往往有助於Management Studio中運行有問題的SQL命令,以蘇斯出語法錯誤。 – RQDQ 2012-03-29 14:41:07

回答

10

在SQL的更新語法將

UPDATE Town 
SET number = @number 
WHERE userid = @userid AND buildingid = @buildingid 
+0

謝謝!我應該知道這個......無論如何,現在我知道了! :-P – Twistar 2012-03-29 14:44:09

6

您更新查詢是錯誤的:

UPDATE Town 
SET number = @number 
WHERE userid = @userid AND buildingid = @buildingid 
+0

Darren,我投票贊成Jamiec的回答,因爲我認爲有些含糊不清需要清理。你的語法是正確的,但我不清楚提問者是否真的想更新BuildingID(或userID)。 – peacedog 2012-03-29 14:42:03

+0

@peacedog - 我明白了。在他的查詢中,他陳述了VALUES(userid,buildingid,number - 因此我假設他希望更新這些作爲他的WHERE子句是正確的,我將重新編輯以包含數字。 – 2012-03-29 14:44:35