insert语句中出现错误C#/MySQL多选语句

本文关键字:语句 MySQL 错误 insert | 更新日期: 2023-09-27 18:28:50

我有一个小问题,要从C#中的两个不同表插入MySql数据库

这是发生错误的代码

command.CommandText = 
    @"INSERT INTO personen (Name, Surname, GenderID, BirthplaceID) 
      VALUE @Name, @Surname, (SELECT GenderID FROM gender WHERE Gender = @GenderID),  
       (SELECT BirthplaceID FROM place WHERE placename = @BirthplaceID);";

当我替换"@"语句并只填写名称时,它可以正常工作。所以我想知道问题出在哪里。

另外,问题不在于一些答案所说的参数,因为我已经添加了它们(见下文)。

insertname = data.Name;
                    insertsurname = data.Surname;
                    insertgenderid= data.Gender;
                    insertbirthplaceid= data.Birthplace;
                    command.Parameters.AddWithValue("@Name", insertname);
                    command.Parameters.AddWithValue("@Surname", insertsurname);
                    command.Parameters.AddWithValue("@GenderID", insertgenderid);
                    command.Parameters.AddWithValue("@BirthplaceID", insertbirthplaceid);
                    command.ExecuteNonQuery();

insert语句中出现错误C#/MySQL多选语句

如果问题是您列出的标题:

这是现在验证的sqlfiddle(表都是int,只是因为语法不是我们想要的,类型)

首先,它应该是VALUES而不是VALUES。其次,VALUES必须用括号括起来。

command.CommandText = 
@"INSERT INTO personen (Name, Surname, GenderID, BirthplaceID) 
  VALUES (@Name, @Surname, 
             (SELECT GenderID FROM gender WHERE Gender = @GenderID),  
             (SELECT BirthplaceID FROM place WHERE placename = @BirthplaceID)
         );";