Неверный синтаксис около 'GO' с использованием SqlCommand - PullRequest
0 голосов
/ 25 февраля 2020

Этот интерфейс появляется каждый раз, когда я выполняю этот код, который вы найдете ниже:

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)

И описание ошибки:

Неверный синтаксис рядом с 'GO '

Ответы [ 3 ]

5 голосов
/ 25 февраля 2020

GO не является оператором Transact- SQL; это команда, распознаваемая утилитами sqlcmd и o sql и 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

4 голосов
/ 25 февраля 2020

Вместо того, чтобы заставлять сервер анализировать ваш оператор USE, а затем оставить команду / соединение для перезапуска для отправки CREATE TABLE, разделив ваши два оператора, потому что, как говорит MatSnow, GO не является SQL серверной командой.

Вместо этого вы можете просто позвонить ChangeDatabase на myConn, прежде чем использовать ее:

   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)
0 голосов
/ 25 февраля 2020

Вы не можете выбрать любую База данных с вашим кодом.

База данных должна быть выбрана в SQL Функция соединения.

...