0

私はデータベース接続に不慣れで、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
4

3 に答える 3

1

文字列を連結して SQL 文字列を作成するというルーチンに取り組まないことを強くお勧めします。特にこれが Web ベースの場合は、SQL インジェクションに対して無防備なままにしておくことになります。文字列内のプレースホルダー パラメーターを使用してコマンドを作成し、そのパラメーターをコマンド オブジェクトに追加する必要があります。コマンドに表示されるのと同じ順序でパラメーターを追加します...など

cmdInsert.CommandText = "INSERT INTO Customer (FirstName, LastName) VALUES ( @parmFirstName, @parmLastName )"
cmdInsert.Parameters.AddWithValue( "@parmFirstName", txtFirstName.Text );
cmdInsert.Parameters.AddWithValue( "@parmLastName", txtLastName.Text );

フィールド名にスペースが含まれている場合、データベースによって動作が異なり、フィールドの前後に 1 つのバッククォート (数字の 1 の左側のキー) が必要になるものもあります。「ファーストネーム」など。[first name] のように角かっこを使用するものもあります。

于 2013-03-20T03:11:28.390 に答える
0

これを試して

"INSERT INTO Customer (First Name) VALUES ('" & txtFirstName.Text & "')"

于 2013-02-26T11:45:24.297 に答える
0

警告:ボビーがあなたを見ています。

cmdInsert.CommandText = _
"INSERT INTO Customer (First Name) VALUES ('" & txtFirstName.Text & "')"
于 2013-02-26T11:45:58.633 に答える