【问题标题】:Incorrect syntax near 'GO' using SqlCommand使用 SqlCommand 的“GO”附近的语法不正确
【发布时间】:2020-02-25 09:12:36
【问题描述】:

每次执行您在下面找到的代码时都会出现此界面:

str1 = "USE [" + database + "];" + vbCrLf +
   "GO" + vbCrLf +
   " CREATE TABLE  [dbo].[ARMSet] ([Id] Int IDENTITY(1, 1) Not NULL,

    );" + vbCrLf +
              " GO"
Dim myCommand1 As SqlCommand = New SqlCommand(str1, myConn)

并且bug的描述是:

“GO”附近的语法不正确

【问题讨论】:

标签: sql vb.net sqlcommand


【解决方案1】:

GO 不是 Transact-SQL 语句;它是 sqlcmd 和 osql 实用程序以及 SQL Server Management Studio 代码编辑器识别的命令。

https://docs.microsoft.com/en-us/sql/t-sql/language-elements/sql-server-utilities-statements-go?view=sql-server-ver15#remarks

【讨论】:

    【解决方案2】:

    而不是强制服务器解析您的USE 语句,然后保留命令/连接以回收以发送CREATE TABLE,将您的两个语句分开,因为MatSnow saysGO 不是不是 SQL Server 命令。

    您可以在使用之前在myConn 上调用ChangeDatabase

       myConn.ChangeDatabase(database)
       str1 = "CREATE TABLE  [dbo].[ARMSet] (
                   [Id] Int IDENTITY(1, 1) Not NULL,
                   [Name] nvarchar(max)  Not NULL,
                   [ArmNumber] Int  Not NULL,
                   [IP] nvarchar(max)  Not NULL,
                   [Port] Int  Not NULL,
                   [Modbusaddress] Int  Not NULL,
                   [Type] Int  Not NULL,
                   [IsMaster] bit  Not NULL,
                   [DeliveryType] Int  Not NULL,
                   [CurretPosition] Int  Not NULL,
                   [IsSwingArm] bit  Not NULL,
                   [IsLoadScale] bit  Not NULL,
                   [PresetId] Int  Not NULL
               );"
       Dim myCommand1 As SqlCommand = New SqlCommand(str1, myConn)
    

    【讨论】:

      【解决方案3】:

      您不能使用您的代码选择任何数据库

      必须在 SQL Connection 函数中选择数据库。

      【讨论】:

      • 这不是真的。通常使用连接字符串选择数据库,但也可以使用USE 语句进行设置。
      • @MatSnow - 需要注意的是其他数据库必须与连接字符串在同一个实例中......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-23
      • 2011-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多