Vb.net 在数据库中插入数据时出错

Vb.net 在数据库中插入数据时出错,vb.net,Vb.net,问题:将数据插入数据库 错误: 用户未处理SQLException 关键字“User”附近的语法不正确 我放的箭头是突出显示的那条线,似乎是我不确定的错误 Imports System.Web Imports System.Web.UI Imports System.Web.UI.WebControls Imports System.Data.SqlClient Imports System.Configuration Partial Public Class _Default Inh

问题:将数据插入数据库

错误:

用户未处理SQLException

关键字“User”附近的语法不正确

我放的箭头是突出显示的那条线,似乎是我不确定的错误

Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Data.SqlClient
Imports System.Configuration

Partial Public Class _Default
    Inherits System.Web.UI.Page

    Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        con.Open()
    End Sub

    Protected Sub addBTN_Click(ByVal sender As Object, ByVal e As EventArgs) Handles addBTN.Click
    Dim cmd As New SqlCommand("insert into User (Name, Gender, Age) values ('" & nameTB.Text & "', '" & genderTB.Text & "', '" & ageTB.Text & "')", con)
    cmd.ExecuteNonQuery()  <------------------------------
    con.Close()
    nameTB.Text = ""
    genderTB.Text = ""
    ageTB.Text = ""

End Sub
End Class
导入系统.Web
导入System.Web.UI
导入System.Web.UI.WebControl
导入System.Data.SqlClient
导入系统配置
部分公共类\u默认值
继承System.Web.UI.Page
Dim con作为新的SqlConnection(ConfigurationManager.ConnectionString(“ConnectionString”).ConnectionString)
受保护的子页加载(ByVal sender作为对象,ByVal e作为System.EventArgs)处理Me.Load
con.Open()
端接头
受保护的子addBTN_Click(ByVal sender作为对象,ByVal e作为事件参数)处理addBTN。单击
Dim cmd作为新的SqlCommand(“插入到用户(名称、性别、年龄)值(“&nameTB.Text&“,”&genderTB.Text&“,”,“&ageTB.Text&“)”,con)
cmd.ExecuteNonQuery()
用户
是一个。用方括号将单词括起来:

 Dim cmd As New SqlCommand("insert into [User] (Name, Gender, Age) values ('" & nameTB.Text & "', '" & genderTB.Text & "', '" & ageTB.Text & "')", con)

来源:

用户是保留字,因此需要放在方括号内。您的查询对SQL注入开放,因此需要参数化。我建议您在需要之前打开连接。另外,请使用
Using
语句,它将为您处理结账和处置事宜

Using con As New SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)
     Using cmd As New SqlCommand("insert into [User] (Name, Gender, Age) values (@nameTB, @genderTB,@ageTB)", con)
        cmd.Parameters.AddWithValue("@nameTB", nameTB.Text)
        cmd.Parameters.AddWithValue("@genderTB", genderTB.Text)
        cmd.Parameters.AddWithValue("@ageTB", ageTB.Text)
        cmd.CommandType = CommandType.Text
        con.Open()
        cmd.ExecuteNonQuery()
        nameTB.Text = ""
        genderTB.Text = ""
        ageTB.Text = ""
    End Using
End Using

insert-into-User
更改为
insert-into[User]
(User是一个保留字),并使用
con.open()
打开
cmd.ExecuteNonQuery()之前的连接。您还应该研究参数化查询。他在页面加载中打开了它,并在类中使其变暗。@DieVeenman他就是这样做的!对不起,我错过了。但这一点应该被转移。