2012-03-24 90 views
3

我有一个小问题,从2个不同的表在C#中插入MySQL数据库错误C#/ MySQL的多个SELECT语句

这里是我的代码中的错误发生

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(); 
+0

使用dotConnect或其他一些mySQL库实现? – 2012-03-24 18:51:05

回答

3

如果问题是你列为标题:

这里是sqlfiddle of this validating now(表都诠释,只是因为语法就是我们要去的不是,类型)

首先,它应该是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) 
     );"; 
+0

我想我不清楚我的问题,因为我添加了所有的paramates,强硬它不会工作。 – Leviso 2012-03-24 19:37:49

+0

非常感谢您帮助我:) – Leviso 2012-03-24 20:12:28