C# 从一个表插入到另一个表时出现问题!
我想将Users表UsersID插入Threads表。但是抛出了一个异常,表示不存在名为UsersID的列。我认为它确实将u.UserID作为参数并将其放入线程UsersID中,因为我在线程中有一个名为UsersID的列。有解决办法吗C# 从一个表插入到另一个表时出现问题!,c#,asp.net,sql,C#,Asp.net,Sql,我想将Users表UsersID插入Threads表。但是抛出了一个异常,表示不存在名为UsersID的列。我认为它确实将u.UserID作为参数并将其放入线程UsersID中,因为我在线程中有一个名为UsersID的列。有解决办法吗 StringBuilder insertCommand = new StringBuilder(); insertCommand.Append("DECLARE @TopicsId int; INSERT INTO Topics(Theme,To
StringBuilder insertCommand = new StringBuilder();
insertCommand.Append("DECLARE @TopicsId int; INSERT INTO Topics(Theme,Topics,Date)");
insertCommand.Append("VALUES(@topic,@subTopic,GETDATE())");
insertCommand.Append("SET @TopicsId = SCOPE_IDENTITY()");
insertCommand.Append("INSERT INTO Threads(UsersID,TopicsID,Date,ThreadTitle,ThreadParagraph,ThreadClosed,Views,Replies,PageNumber)");
insertCommand.Append(" SELECT u.UsersID,@TopicsID,GETDATE(),@questionTitle,@questionParagraph,0,0,0,FLOOR(Count(t.TopicsID)/20)"); // i think the problem is in the u.UserID in this line
insertCommand.Append(" FROM Threads AS d ");
insertCommand.Append(" INNER JOIN Topics AS t ON d.TopicsID=t.TopicsID");
insertCommand.Append(" INNER JOIN Users AS u ON u.UsersID=t.UsersID");
INSERT需要VALUES关键字
我在语句中没有看到它您是否将UsersID和UserID列拼错了 如果您可以通过SQL Management Studio直接访问数据库,请尝试仅运行“选择并正确格式化SQL”命令,以便它显示有问题的行号,例如
Insert into threads(....)
Values (blablabla,blablabla)
为什么要包含前三个insertCommand.Append行?这些与随后的五行有任何关系吗?例如@questionTitle来自何处?它们工作正常。。questionTitle来自threads表,我向其中输入用户想要的内容基于INSERT-into-Topics语句,我假定您没有任何Topics.UsersID列。可能,t.UsersID应该是d.UsersID。是的,是uniqueuserIdentifier中的错误。-我更改了算法。现在它起作用了。无论如何,谢谢。@Will:在大多数情况下,它们不是必须的,无论如何,在SQL Server中也不是。不过,为了清晰起见,我倾向于把它们放在各处。事实并非如此。带有嵌套select的insert语句在没有values关键字的情况下可以正常工作。检查为什么我会得到那个异常?。为什么它看不到我有UsersID
SELECT
u.UsersID,@TopicsID,GETDATE(),@questionTitle,@questionParagraph,0,0,0,FLOOR(Count(t.TopicsID)/20))
FROM
Threads AS d
INNER JOIN
Topics AS t ON d.TopicsID=t.TopicsID
INNER JOIN
Users AS u ON u.UsersID=t.UsersID