2012-03-29 1 views
2

Ich habe eine Tabelle namens Town, die eine Beziehung zwischen Spieler und einem Spieler Gebäude hält. Die Tabelle hat die diese Säulen: userid (int) buildingid (int) Nummer (int)Cant Update-Tabelle in SQL C#

I haben erfolgreich ein neues Gebäude für einen Spieler eingelegt und ich habe jetzt Mühe, die bestimmte Zeile für einen Spieler zu aktualisieren.

Ich habe diesen Code:

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!!!!"; 
      } 

Die existPlayerBuilding Methode gibt true zurück, wenn ein Spieler bereits ein Gebäude mit der angegebenen ID und andernfalls false hat. Wenn ich laufe und teste, wenn ich eine Zahl für ein Benutzergebäude aktualisieren kann, passiert nichts.

+0

Es ist oft hilfreich problematischen SQL-Befehle in Management Studio zu laufen Syntaxfehler abtasten. – RQDQ

Antwort

10

Die Syntax für ein Update in SQL

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

Danke! Ich hätte das wissen müssen ... Wie auch immer, jetzt weiß ich es! :-P – Twistar

6

Ihre Update-Abfrage ist falsch:

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

Darren, ich habe für Jamiecs Antwort gestimmt, weil ich denke, dass es eine Zweideutigkeit gibt, die geklärt werden muss. Ihre Syntax ist korrekt, aber mir ist nicht klar, dass der Fragesteller wirklich BuildingID (oder userID) aktualisieren möchte. – peacedog

+0

@peacedog - Ich verstehe. Aus seiner Abfrage gibt er VALUES (userid, buildingid, number - Daher nehme ich an, dass er diese aktualisieren möchte, da seine WHERE-Klausel korrekt ist. Ich werde wieder bearbeiten, um nur die Nummer zu enthalten. Danke –