Ошибка SQL VB.net должна объявить скалярную переменную - PullRequest
2 голосов
/ 28 марта 2012

Привет, я давно застрял в этом простом, но тупом сообщении "Должен объявить скалярную переменную"

У меня есть код vb.net и SQL, который вставляет данные в простую таблицу. Он работает нормально с примерами данных, но когда я пытаюсь использовать параметр (insertcommand.Parameters.Add ("@ ID", SqlDbType.Int, 3) .Value = 50), это выдает ошибку Если я заменю @ID просто числом, это будет работать.

В конце концов .Value = txtid.text, если я смогу заставить параметр работать.

Спасибо за вашу помощь.

        Dim connection As New SqlConnection
    Dim connectionString As String =
            "Data Source=LAPTOP-PC\SQLEXPRESS2008;Initial Catalog=golf;" &
             "Integrated Security=True"
    connection.ConnectionString = connectionString
    Dim insertcommand As New SqlCommand
    insertcommand.Connection = connection

    insertcommand.Parameters.Add("@ID", SqlDbType.Int, 3).Value = 50
    'Must declare the scalar variable

    Dim insertStatement As String =
     "INSERT INTO Golf (ID, Title, Firstname, Surname, Gender, DOB, Street, Suburb, City, [Available week days], Handicap)" &
     "Values( @ID, 'Mr', 'Howard', 'The Duck', 'm', '12/12/23', 'asd', 'sdf', 'City', '0', '56') "

    Using insertconnection As New SqlConnection(connectionString)
        Dim adapter As New SqlDataAdapter()
        Try
            insertconnection.Open()
            adapter.InsertCommand = insertconnection.CreateCommand
            adapter.InsertCommand.CommandText = insertStatement
            adapter.InsertCommand.ExecuteNonQuery()

            MsgBox("Data Inserted  !! ")
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try

    End Using

Ответы [ 4 ]

1 голос
/ 28 марта 2012

Код немного запутан - вы настраиваете объект SqlCommand, а затем не используете его.Попробуйте это:

Using connection As New SqlConnection("Data Source=LAPTOP-PC\SQLEXPRESS2008;Initial Catalog=golf;Integrated Security=True")
    Dim insertStatement As String = _
     "INSERT INTO Golf (ID, Title, Firstname, Surname, Gender, DOB, Street, Suburb, City, [Available week days], Handicap)" _
     & "Values( @ID, 'Mr', 'Howard', 'The Duck', 'm', '12/12/23', 'asd', 'sdf', 'City', '0', '56') "
    Using insertcommand As New SqlCommand(insertStatement, connection)
        connection.Open()
        insertcommand.Parameters.AddWithValue("@ID", txtid.Text)
        insertcommand.ExecuteNonQuery()
    End Using
End Using
1 голос
/ 28 марта 2012

Попробуйте использовать

insertcommand.Parameters.AddWithValue("@ID", 50);

См. Некоторые документы здесь: http://msdn.microsoft.com/it-it/library/system.data.sqlclient.sqlcommand.parameters.aspx

0 голосов
/ 28 марта 2012

Вам необходимо объявить параметр перед использованием, как это

SqlParameter @ID = new SqlParameter(); 
0 голосов
/ 28 марта 2012

Почему бы просто не записать строку в переменную и использовать переменную для вставки в вашу таблицу?

dim ID as string = txtid.text

Если вы хотите записать данные в таблицу, вы должны обернуть ее так: 'data' Так же, как вы сделали с «Утиной», например.Это означает, что ваша командная строка должна выглядеть следующим образом:

"Values('" & ID & "', 'Mr', 'Howard', 'The Duck', 'm', '12/12/23', 'asd', 'sdf', 'City', '0', '56') "
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...