我的SQL语句有问题

时间:2011-06-07 10:27:33

标签: asp.net sql identity-insert

    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)");

我明白了:

  

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

4 个答案:

答案 0 :(得分:2)

我注意到的第一件事是:

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

可能需要:

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

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

答案 1 :(得分:2)

DECLARE @TopicsID int

后需要分号

这会处理“错误的语法”并声明标量变量。

我相信您需要删除三个VALUES周围的单引号。这导致它认为您只提供了一个VALUE而不是三个。

答案 2 :(得分:1)

尝试     insertCommand.AppendLine

SQL看

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

您需要分开不同的陈述

答案 3 :(得分:1)

你在最后一行的单引号是错误的 - 它把它全部转到一个字符串上:

更改

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

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