asp / vb.net关键字'User'附近的语法不正确

时间:2014-03-13 13:44:55

标签: asp.net database vb.net forms

您好我正在尝试将数据插入我的用户表并在ASPNETDB中创建用户我的代码如下:

  Dim conn As SqlConnection
    Dim cmd As SqlCommand
    Dim recordsAffected As Integer

    Dim cmdstring As String = "INSERT INTO User(Staff_No, First_Name, Surname, Position_Held, Email, Telephone_Number, Location_Code) Values(@StaffNo,@First,@Surname,@Role,@Email,@Telephone,@Location)"
    conn = New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True")
    cmd = New SqlCommand(cmdstring, conn)
    cmd.Parameters.Add("@StaffNo", SqlDbType.Int).Value = TxtUsername.Text
    cmd.Parameters.Add("@First", SqlDbType.NChar).Value = TxtFirstName.Text
    cmd.Parameters.Add("@Surname", SqlDbType.NChar).Value = TxtSurname.Text
    cmd.Parameters.Add("@Role", SqlDbType.NChar).Value = TxtRole.Text
    cmd.Parameters.Add("@Email", SqlDbType.NChar).Value = TxtEmail.Text
    cmd.Parameters.Add("@Telephone", SqlDbType.NChar).Value = TxtTelephone.Text
    cmd.Parameters.Add("@Location", SqlDbType.NChar).Value = DdlLocation.SelectedItem.Text.ToString
    conn.Open()
    recordsAffected = cmd.ExecuteNonQuery
    conn.Close()
    Try
        Membership.CreateUser(TxtUsername.Text, TxtPassword.Text)
        lblResult.Text = "Successfully created user " & TxtUsername.Text
    Catch ex As Exception
        lblResult.Text = "Error" & ex.ToString
    End Try
       End Sub

关键字“用户”附近出现异常错误语法我检查了我的数据库并且所有值都相同任何帮助都非常感谢

3 个答案:

答案 0 :(得分:2)

USER是reserved keyword。要将其用作表名或列名,您需要将其封装在方括号

 Dim cmdstring As String = "INSERT INTO [User] " & _ 
     "(Staff_No, First_Name, Surname, Position_Held, Email, Telephone_Number, Location_Code) " & _
     "Values(@StaffNo,@First,@Surname,@Role,@Email,@Telephone,@Location)"

我建议更改此名称,因为每次需要使用该表编写查询时都会出现此问题。

答案 1 :(得分:1)

错误消息的重要部分是Keyword - User是一个关键字,因此如果您想将其用作标识符,则需要delimit

Dim cmdstring As String = "INSERT INTO [User](Staff_No, ...

虽然通常情况下,我建议更改表格的名称,以完全避免keywords

答案 2 :(得分:0)

用户是SQL Server的关键字。

你可以在用户的​​两侧添加[]并尝试。

感谢

  

Dim cmdstring As String =“INSERT INTO [User](Staff_No,First_Name,Surname,Position_Held,Email,Telephone_Number,Location_Code)值(@ StaffNo,@ First,@ Surname,@ Role,@ Email,@ Telephone,@位置)“