Vb.net Insert语句中的语法错误

Vb.net Insert语句中的语法错误,vb.net,oledb,Vb.net,Oledb,我是数据库连接新手,当我在cmdInsert.ExecuteNonQuery()行遇到问题时,它会说INSERT INTO语句存在语法错误,我无法找出问题所在: Imports System.Data Imports System.Data.OleDb Public Class txtNotes Dim cnnOLEDB As New OleDbConnection Dim cmdInsert As New OleDbCommand Dim strConnectionS

我是数据库连接新手,当我在
cmdInsert.ExecuteNonQuery()
行遇到问题时,它会说INSERT INTO语句存在语法错误,我无法找出问题所在:

Imports System.Data
Imports System.Data.OleDb
Public Class txtNotes
    Dim cnnOLEDB As New OleDbConnection
    Dim cmdInsert As New OleDbCommand

    Dim strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & System.Environment.CurrentDirectory & "\CourseworkDB"
    'the name of the database goes in here'

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        cnnOLEDB.ConnectionString = strConnectionString
        cnnOLEDB.Open()

    End Sub

    Private Sub AddFirstName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AddFirstName.Click
        If txtFirstName.Text <> "" Then

            MsgBox(cmdInsert.CommandText)
            cmdInsert.CommandText = "INSERT INTO Customer (First Name) VALUES (" & txtFirstName.Text & ", '"
            cmdInsert.CommandType = CommandType.Text
            cmdInsert.Connection = cnnOLEDB
            cmdInsert.ExecuteNonQuery()
        Else
            MsgBox("Enter the required values:" & vbNewLine & "1. First Name")
        End If
        cmdInsert.Dispose()
    End Sub
End Class
导入系统数据
导入System.Data.OleDb
公共类txtNotes
Dim cnnOLEDB作为新的OLEDB连接
Dim cmdInsert作为新的OleDbCommand
Dim strConnectionString=“Provider=Microsoft.Jet.OLEDB.4.0;数据源=“&System.Environment.CurrentDirectory&”\CourseworkDB”
'数据库的名称位于此处'
私有子表单1_Load(ByVal发送方作为System.Object,ByVal e作为System.EventArgs)处理MyBase.Load
cnnOLEDB.ConnectionString=strConnectionString
cnnOLEDB.Open()
端接头
私有子AddFirstName_Click(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理AddFirstName。单击
如果txtFirstName.Text为“”,则
MsgBox(cmdInsert.CommandText)
cmdInsert.CommandText=“插入到客户(名字)值(&txtFirstName.Text&,”
cmdInsert.CommandType=CommandType.Text
cmdInsert.Connection=cnnOLEDB
cmdInsert.ExecuteNonQuery()
其他的
MsgBox(“输入所需值:”&vbNewLine&“1.名字”)
如果结束
cmdInsert.Dispose()
端接头
末级
试试这个

“插入客户(名字)值(“&txtFirstName.Text&“)”
警告:正在监视您

cmdInsert.CommandText = _
"INSERT INTO Customer (First Name) VALUES ('" & txtFirstName.Text & "')"

我强烈建议不要通过将字符串连接在一起而进入构建SQL字符串的例行程序。您将对SQL注入敞开大门,尤其是在基于web的情况下。您应该在字符串中使用占位符参数构建命令,然后将参数添加到命令对象中。在相同的位置添加参数命令中显示的顺序…例如

cmdInsert.CommandText = "INSERT INTO Customer (FirstName, LastName) VALUES ( @parmFirstName, @parmLastName )"
cmdInsert.Parameters.AddWithValue( "@parmFirstName", txtFirstName.Text );
cmdInsert.Parameters.AddWithValue( "@parmLastName", txtLastName.Text );
如果字段名具有嵌入空格,则不同的数据库可以工作 不同的是,有些需要单回勾(数字左边的键) 1) 在字段周围。例如“名字”。有些使用方括号, 例如[名字]