"Incorrect syntax near 'GO'" 插入值时

"Incorrect syntax near 'GO'" when inserting values

我遇到了上面的错误。 我使用这个代码:

  //split the script on "GO" commands
                string[] splitter = new string[] { "\r\nGO\r\n" };
                string[] commandTexts = data.Split(splitter,
                  StringSplitOptions.RemoveEmptyEntries);

  foreach (string commandText in commandTexts)
  {
    SqlCommand cmdScript = new SqlCommand(commandText, conn);
    cmdScript.ExecuteNonQuery();               
   }

我用 SSMS 编写了我的表内容的脚本,所以我得到了一个包含大量 'INSERT INTO' 语句和它们之间的一些 'GO' 语句的文件。

最后一个 'GO' 语句不在文件末尾 - 在最后一个语句之后有一些 'INSERT INTO' 行。这在 SSMS 中执行时效果很好,但在 C# 中使用上述构造时效果不佳。

我放入一个计数器来计算循环中 'commandText' 的数量。我有 3107。在文件末尾添加 'GO' 后,我的计数器显示 3108,但仍然出现错误。在这两种情况下,所有数据都被完全插入到我的表中,所以错误发生在最后。 知道这可能是什么吗?

如果使用字符串生成器会更容易 instead.you 可以使用字符串 builder.append class 添加新的字符串行

如果解析器说'syntax error before GO',则表示您已将 GO 发送到服务器。一定是你的分离器没有正确分离。在 GO 之后可能类似于 space,使其与 \r\nGO\r\n 不完全匹配。

你可以 https://github.com/rusanu/DbUtilSqlCmd 试试看。