写入Access时INSERT INTO语句中的语法错误

时间:2013-05-24 01:38:30

标签: .net database vb.net ms-access oledb

我正在尝试编写一个程序,我可以将数据写入Access数据库,但我一直收到错误“INSERT INTO语句中的语法错误”。

FirstLast是表的名称; FirstLast是其中的列。

Imports System.Data.OleDb

Public Class Form1
    Dim theConnectionString As New OleDbConnection
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        theConnectionString.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\user\Documents\Database1.accdb"

        Dim cmd As OleDbCommand = New OleDbCommand("INSERT INTO FirstLast (First, Last) VALUES (@First, TextBox1.text)", theConnectionString)

        cmd.Parameters.Add("@First", OleDbType.Char, 255).Value = TextBox1.Text
        cmd.Parameters.Add("@Last", OleDbType.Char, 255).Value = TextBox1.Text

        Try
            theConnectionString.Open()
            cmd.ExecuteNonQuery()
        Catch ex As Exception
            Throw ex
        Finally
            theConnectionString.Close()
        End Try

    End Sub
End Class

1 个答案:

答案 0 :(得分:5)

我怀疑你只需要使用命名参数而不是位置参数:

INSERT INTO FirstLast (First, Last) VALUES (@First, @Last)

请注意,您还应该对连接和命令使用Using语句,以便自动清理,而无需显式Finally块。 (你可以摆脱整个Try / Catch / Finally,因为你只是在重新抛出异常。)

如下面的评论中所述,您可能还希望TextBox2.Text用于@Last参数,而不是再次使用TextBox1.Text