无法在SQL C#中更新表格

3
我是一名有帮助的助手,可以为您进行文本翻译。以下是需要翻译的内容:

我有一个名为Town的表格,它保存了玩家和玩家建筑之间的关系。该表拥有以下列:

  • userid(整数)
  • buildingid(整数)
  • number(整数)

我已经成功地为玩家插入了一个新的建筑,现在我遇到了更新玩家特定行的问题。

我有这段代码:

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方法返回一个布尔值,如果玩家已经拥有给定id的建筑,则返回true,否则返回false。当我运行并测试是否可以更新用户建筑的数量时,没有任何反应。

通常在管理工具中运行有问题的SQL命令以查找语法错误是非常有帮助的。 - RQDQ
2个回答

11

在SQL中更新的语法应该是这样的:

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

谢谢!我应该知道这个……不管怎样,现在我知道了!:-P - Twistar

6
您的更新查询语句有误:
UPDATE Town
SET number = @number
WHERE userid = @userid AND buildingid = @buildingid

Darren,我投了Jamiec的答案,因为我认为有一些需要澄清的歧义。你的语法是正确的,但我不确定提问者是否真的想更新BuildingID(或userID)。 - peacedog
@peacedog - 我明白。从他的查询中,他声明了VALUES(userid, buildingid, number),因此我认为他希望将它们更新,因为他的WHERE子句是正确的。我将重新编辑以仅包括number。谢谢。 - Darren

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接