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取り除くことができます。)TryCatchFinally

以下のコメントに記載されているように、おそらくパラメーターを再度使用するのではなく、使用するつもりTextBox2.Textでした。@LastTextBox1.Text

于 2013-05-24T01:41:14.457 に答える