Исключение, вызывающее VB.NET код не выполняется должным образом

#sql-server #vb.net

#sql-server #vb.net

Вопрос:

Я получаю исключение при запуске приведенного ниже VB.NET код для проверки пользователя..В исключении указано, что «Неправильный синтаксис рядом с переменной user»

Кто-нибудь может сказать мне, где я ошибаюсь?

       Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    If TextBox1.Text.Trim().Length = 0 Or TextBox2.Text.Trim().Length = 0 Then
        MsgBox("Enter a user id and password")
        Return 'Terminate this method
    End If

    Dim myconnection As SqlConnection
    Dim mycommand As SqlCommand
    Dim dr As SqlDataReader
    Dim userid = TextBox1.Text
    Dim password = TextBox2.Text

    Try
        myconnection = New SqlConnection("server=PARTH- PCSQLEXPRESS;uid=sa;pwd=parth;database=fcrit")

        myconnection.Open()
        mycommand = New SqlCommand("select * from user where [user id]=@userid and [password]=@password", myconnection)
        mycommand.Parameters.Add("@userid", SqlDbType.VarChar, 30).Value = userid
        mycommand.Parameters.Add("@password", SqlDbType.VarChar, 30).Value = password

        'mycommand = New SqlCommand("select * from user where user id='" amp; TextBox1.Text amp; "' and password='" amp; TextBox2.Text amp; "'", myconnection)
        dr = mycommand.ExecuteReader()

        If (dr IsNot Nothing) Then
            If (dr.Read()) Then
                MsgBox("User is authenticated")
                Form2.Show()
            Else
                MsgBox("Please enter correct username and password")
            End If
        End If
        myconnection.Close()
    Catch ex As Exception
        Throw

    Finally
    End Try
  End Sub
  

Ответ №1:

Попробуйте изменить свой SQL на —

 "select * from [user] where [user id]=@userid and [password]=@password"
  

Согласно этой странице ‘User’ является зарезервированным словом

Ответ №2:

User это зарезервированное слово в SQL Server.

Заключите имя таблицы в квадратные скобки:

 mycommand = New SqlCommand("select * from [user] where [user id]=@userid and [password]=@password", myconnection)