2012-03-29 19 views
2

私は、プレイヤーとプレイヤーの建物の関係を保持するTownというテーブルを持っています。テーブルには、これらの列があります。 ユーザーID(int型) buildingid(int型) 番号(int型)SQLのCant更新テーブル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

それは多くの場合、構文エラーを出しSUSSする管理スタジオで問題のあるSQLコマンドを実行すると便利です。 – RQDQ

答えて

10

SQLでの更新のための構文は

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

ありがとう!私はこれを知っていたはずです...とにかく、今私は知っている! :-P – Twistar

6

だろうあなたの更新クエリは、間違っている:

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

ダレン、私はJamiecの答えに投票した。なぜなら私は、あいまいさが解消する必要があると思うからだ。あなたの構文は正しいですが、Askerが実際にBuildingID(またはuserID)を更新したいとは思っていません。 – peacedog

+0

@peacedog - わかっています。彼の質問から、彼はVALUES(userid、buildingid、number - したがって、彼はWHERE句が正しいので、これらを更新したいと思っています。 –

関連する問題