1
    Threads 
------- 
ThreadID
 UsersID 
Date 
ThreadTitle
 ThreadParagraph 
ThreadClosed 

  Topics 
-----
 TopicsID 
Theme
 Topics 
Date 

这是我的声明:

  StringBuilder insertCommand = new StringBuilder();
    insertCommand.Append("DECLARE @TopicsID int");
    insertCommand.Append("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)");
    insertCommand.Append("VALUES(@uniqueIdentifier,@TopicsID,GETDATE(),@questionTitle,@questionParagraph,0)");

我明白了:

关键字“INTO”附近的语法不正确。必须声明标量变量“@TopicsID”。必须声明标量变量“@TopicsID”。

4

4 回答 4

2

我注意到的第一件事是:

insertCommand.Append("VALUES('@topic,@subTopic,GETDATE()')");

可能需要:

insertCommand.Append("VALUES(@topic,@subTopic,GETDATE())");

看起来你那里有一些额外的单引号。

于 2011-06-07T10:30:03.477 回答
2

后面需要一个分号DECLARE @TopicsID int

这将处理“不正确的语法”并声明标量变量。

而且我相信您需要删除三个VALUES. 这导致它认为您只提供了一个VALUE而不是三个。

于 2011-06-07T10:30:33.557 回答
1

尝试 insertCommand.AppendLine

SQL 看到

DECLARE @TopicsID intINSERT INTO Topics(Theme,Topics,Date) ...

您需要将不同的语句分开

于 2011-06-07T10:30:46.690 回答
1

你在最后一行的单引号是错误的——它把它全部变成一个字符串:

改变

  insertCommand.Append("VALUES('@uniqueIdentifier,@TopicsID,GETDATE(),@questionTitle,@questionParagraph,0')");

insertCommand.Append("VALUES(@uniqueIdentifier,@TopicsID,GETDATE(),@questionTitle,@questionParagraph,0)");
于 2011-06-07T10:32:41.917 回答