C# 如何更新外键列并在其上插入值?

C# 如何更新外键列并在其上插入值?,c#,oop,C#,Oop,我想插入并更新我的表。我的查询语句仅表示主键、项目名称、说明、价格等。。问题是我有另一列,它是外键。当我尝试将值插入到项目数据库表时,出现了错误。它表示列计数与第1行的值计数不匹配。还有,如果我有一列外键,如何更新表 您的SQL代码是错误的。插入记录时必须传递有效的外键值。有效外键值是父表中已存在的值或NULL。但是,将NULL设置为外键列取决于您在子表上创建外键的方式 尝试以下代码,在子表和值中使用正确的外键列顺序替换@fkValue&fkValue: stri

我想插入并更新我的表。我的查询语句仅表示主键、项目名称、说明、价格等。。问题是我有另一列,它是外键。当我尝试将值插入到项目数据库表时,出现了错误。它表示列计数与第1行的值计数不匹配。还有,如果我有一列外键,如何更新表


您的SQL代码是错误的。插入记录时必须传递有效的外键值。有效外键值是父表中已存在的值或NULL。但是,将NULL设置为外键列取决于您在子表上创建外键的方式

尝试以下代码,在子表和值中使用正确的外键列顺序替换@fkValue&fkValue:

                string sql = "INSERT INTO tbl_Account VALUES(@itemId, @fkValue, @itemName, @desc, @price, @stocks)";
                MySqlConnection conn = new MySqlConnection(connection.ConnectionString);
                MySqlCommand cmd = new MySqlCommand(sql, conn);
                cmd.Parameters.AddWithValue("@itemId", ItemID);
                cmd.Parameters.AddWithValue("@fkValue", FkValue);
                cmd.Parameters.AddWithValue("@itemName", ItemName);
                cmd.Parameters.AddWithValue("@desc", Description);
                cmd.Parameters.AddWithValue("@price", Price);
                cmd.Parameters.AddWithValue("@stocks", Stocks);
                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();

希望这有帮助

编写Insert语句时,如果未指定接收值的列,则假定为所有列提供值。您的表tbl_帐户的模式是什么?此外,如果此表中有FK,则需要提供与关系中外部表的键匹配的值。如果使用Insert into而不指定列名,则需要包含表中所有列的数据。您说过您有另一个带有外键的列,所以您需要将其包含到insert中。或者在insert中指定列。顺便问一下,在更新代码中使用名为Item的表,而在insert代码中使用tbl_Account我是否需要为外键创建另一个generateID?我输入了错误的表名,即tbl_项不是tbl_Account,并且我是否需要为外键声明属性,例如public int foreignd{get;set;}
                string sql = "INSERT INTO tbl_Account VALUES(@itemId, @fkValue, @itemName, @desc, @price, @stocks)";
                MySqlConnection conn = new MySqlConnection(connection.ConnectionString);
                MySqlCommand cmd = new MySqlCommand(sql, conn);
                cmd.Parameters.AddWithValue("@itemId", ItemID);
                cmd.Parameters.AddWithValue("@fkValue", FkValue);
                cmd.Parameters.AddWithValue("@itemName", ItemName);
                cmd.Parameters.AddWithValue("@desc", Description);
                cmd.Parameters.AddWithValue("@price", Price);
                cmd.Parameters.AddWithValue("@stocks", Stocks);
                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();