0

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

FirstLast是表的名称;First并且Last是其中的列。

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
4

1 回答 1

5

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

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

请注意,您还应该Using对连接和命令使用语句,以便您自己自动清理而不需要显式Finally块。(你可以摆脱你的整个Try//考虑到你只是重新抛出异常。)CatchFinally

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

于 2013-05-24T01:41:14.457 回答