2016-04-29 13 views
1

私はVB.netを数週間開始しました。私はフォームを作成し、テキストボックスからデータを追加し、データベース(* .accdb)ファイルを更新したい。しかし、私が書いたコードは、次のエラーを与える:vb.net 2010のUPDATEステートメントアクセスデータベースの構文エラー

Syntax error in UPDATE statement.

Private Sub Button1_Click(ByVal sender As System.Object, _ 
    ByVal e As System.EventArgs) Handles Button1.Click 
    ds6.Clear() 
    cmd.Connection = con 
    cmd.CommandText = "UPDATE Player SET pid='" + ComboBox3.Text + "', pfn='" _ 
     + TextBox2.Text + "',pmn='" + TextBox3.Text + "',pln='" + TextBox4.Text _ 
     + "',nic='" + TextBox5.Text + "',dob='" + DateTimePicker1.Value + "',telm='" _ 
     + MaskedTextBox1.Text + "',telh='" + MaskedTextBox2.Text + "',addr='" _ 
     + TextBox6.Text + "',email='" + TextBox10.Text + "',gndr='" + ComboBox1.Text _ 
     + "',weight='" + TextBox1.Text + "',hight'" + TextBox7.Text + "',sgrlvl'" _ 
     + TextBox11.Text + "',prate'" + TextBox8.Text + "' bloodg='" & ComboBox2.Text & "'" 

    cmd.ExecuteNonQuery() 
    MessageBox.Show("Player Updated") 

    dssql6 = "select * from Player" 
    da6 = New OleDb.OleDbDataAdapter(dssql6, con) 
    da6.Fill(ds6, "Player") 

    ComboBox1.Text = ("") 
    ComboBox2.Text = ("") 
    TextBox1.Text = ("") 
    TextBox2.Clear() 
    TextBox5.Clear() 
    TextBox3.Clear() 
    TextBox4.Clear() 
    TextBox6.Clear() 
    TextBox7.Clear() 
    TextBox8.Clear() 
    TextBox10.Clear() 
    TextBox11.Clear() 
    MaskedTextBox1.Clear() 
    MaskedTextBox2.Clear() 

End Sub 

エンドクラス

+6

SQLインジェクションと書式設定の問題を回避するためのパラメータの使用方法を学びます。 – LarsTech

+0

すべての行を同じ情報で更新していますか?そのような場合は、キー制約が発生している可能性があります。 WHERE節はありません。新しい行を挿入していますか?その場合は、INSERTコマンドを使用する必要があります。あなたにも等号がありません。 – GibralterTop

+0

'ds6' ??? 'da6' ??? * 6つのデータセットとアダプタがあることを意味しますか?そうであれば、設計をやめて再考してください。 – Plutonix

答えて

4

あなたは絶頂、sgrlvlとPRATEのための等号を逃しています。 LarsTechは正解ですが、パラメータを使用してこれを行う必要があります。