【问题标题】:asp/vb.net Incorrect syntax near the keyword 'User'asp/vb.net 关键字“用户”附近的语法不正确
【发布时间】:2014-03-13 13:44:55
【问题描述】:

您好,我正在尝试向我的用户表中插入数据,并在 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

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

【问题讨论】:

    标签: asp.net database vb.net forms


    【解决方案1】:

    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)"
    

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

    【讨论】:

    • 欢呼为我节省了很多时间。我认为这是围绕这些线的东西,但只是不知道如何实现它。
    【解决方案2】:

    错误信息的重要部分是Keyword - User 是一个关键字,所以如果你想使用它作为标识符,你需要delimit:

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

    虽然通常情况下,我还是建议更改表的名称,以完全避免使用keywords。

    【讨论】:

      【解决方案3】:

      User 是 SQL Server 的关键字。

      请在用户两边加上 [] 试试。

      谢谢

      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,@位置)”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-06-08
        • 2013-12-16
        • 2017-11-22
        • 2012-11-20
        • 1970-01-01
        • 2011-08-30
        • 2014-11-29
        相关资源
        最近更新 更多