VB.net SQL错误必须声明标量变量

VB.net SQL错误必须声明标量变量,sql,vb.net,insert,Sql,Vb.net,Insert,您好,我已经被这个简单但迟钝的消息“必须声明标量变量”困扰了很长时间 我有一个vb.net和SQL代码,可以将数据插入一个简单的表中。对于示例数据,它可以正常工作,但当我尝试使用参数(insertcommand.Parameters.Add(“@ID”,SqlDbType.Int,3).Value=50)时,它给出了错误。如果我用一个数字替换@ID,它就可以工作了 如果我能让参数工作,那么最终.Value=txtid.text 谢谢你的帮助 Dim connection As N

您好,我已经被这个简单但迟钝的消息“必须声明标量变量”困扰了很长时间

我有一个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
尝试使用

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

请参阅此处的一些文档:

为什么不将字符串写入变量并使用变量插入表中

dim ID as string = txtid.text
如果您想将数据写入表中,您必须像这样包装它,
“数据”
,就像您对“鸭子”所做的那样。这意味着您的命令字符串必须如下所示:

"Values('" & ID & "', 'Mr', 'Howard', 'The Duck', 'm', '12/12/23', 'asd', 'sdf', 'City', '0', '56') "

在像这样使用之前,您需要声明参数

SqlParameter @ID = new SqlParameter(); 

代码有点混乱-您正在设置一个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

谢谢,一开始我用了它,但它仍然不起作用,所以我又回到了旧的add。