0

MySqlデータベースにデータを挿入し、保存ボタンをクリックすると、

SQL 構文にエラーがあります。"grade1") VALUES('section1')' at line 1" 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

正常に動作する他の挿入ステートメントからコピーしましたが、コンボボックスとテキストボックスのみを含むフォームでは、そのようなエラーが発生します。彼らはまた、SQL インジェクションから解放されるように、それをパラメーター化する方法を学んでほしいと言っています。どんな助けでも大歓迎です。サンプルコードは次のとおりです。

conn = New MySqlConnection
conn.ConnectionString = "server=localhost; userid=root; password=root; database=dbase"

Try

    conn.Open()
    Sql = "INSERT INTO dbase.tblgrade_section ('" & cbGradeLvl.SelectedItem & "') VALUES('" & txtNewSec.Text & "') "
    cmd = New MySqlCommand(Sql, conn)
    dr = cmd.ExecuteReader
    MsgBox("Data saved", vbInformation, "Saving Data")
    conn.Close()

Catch ex As Exception
    MsgBox(ex.Message)
Finally
    conn.Close()
End Try
rem End Sub
4

2 に答える 2

2

基本的な MySQL 101: フィールド/テーブル名は、バッククォート以外で引用することはできません。を使用しまし'た。これは、フィールド名を文字列リテラルに変換します。文字列リテラルになると、テーブル/フィールド名ではなくなります。

Sql = "INSERT INTO dbase.tblgrade_section (`" & cbGradeLvl.Selected ... "`...."
                                           ^-----------------------------^---

示された変更に注意してください。

于 2015-01-07T18:53:44.750 に答える
0

列名を引用符で囲むことはできません。プリペアド ステートメントを使用して、SQL インジェクションを「保護」します。

于 2015-01-07T18:58:28.763 に答える