2011-12-16 12 views
0

このマイコードはVB.NETです。私のアクセスデータベースに値を挿入できません。

マイトライキャッチは、命令INSERT INTOに構文エラーがあると言います。 INSERTに何が起こったのか分かりません。私は... ...私はVB.NETの専門家ではないよ、私はC#で、より良いんだけど、私はVBで、とにかくこれを実行する必要がある時間を超えるため、エラーのために私を助けるため

感謝を検索しました!!

Sub InsertRecord() 
Dim conClasf As OleDbConnection 
Dim cmdClasf As New OleDbCommand 
Dim strClasf As String 
Dim strSQL As String 
Dim intRowsAff As Integer 

lblErrMsg.Text = "" 
lblRecsAff.Text = "" 
    strClasf = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
     "Data Source=" & _ 
     server.mappath("BecsEtMuseaux.mdb") & ";" 
conClasf = New OleDbConnection(strClasf) 
conClasf.Open 

Randomize 
    strSQL = "INSERT INTO client (" & _ 
     "UserName, " & _ 
     "Prenom, " & _ 
     "Nom, " & _ 
     "password, " & _ 
     "mail, " & _ 
     "Addresse, " & _ 
     "Ville, " & _ 
     "PostalCode, " & _ 
     "Province, " & _ 
     "Pays, " & _ 
     "AnimalGenre, " & _ 
     "NomAnimal, " & _ 
     "Race, " & _ 
") VALUES ('" & _ 
     Replace(txtUserName.Text, "'", "''") & _ 
     "', '" & _ 
     Replace(txtPrénom.Text, "'", "''") & _ 
     "', '" & _ 
     Replace(txtNom.Text, "'", "''") & _ 
     "', '" & _ 
     Replace(txtPass.Text, "'", "''") & _ 
     "', '" & _ 
     Replace(txtMail.Text, "'", "''") & _ 
     "', " & _ 
     Replace(txtAdresse.Text, "'", "''") & _ 
     "', " & _ 
     Replace(txtVille.Text, "'", "''") & _ 
     "', " & _ 
     Replace(txtPostal.Text, "'", "''") & _ 
     "', " & _ 
     Replace(txtProvince.Text, "'", "''") & _ 
     "', " & _ 
     Replace(txtPays.Text, "'", "''") & _ 
     "', " & _ 
     Replace(rblAnimal.Text, "'", "''") & _ 
     "', " & _ 
     Replace(txtAnimal.Text, "'", "''") & _ 
     "', " & _ 
     Replace(txtRace.Text, "'", "''") 

     cmdClasf = New OleDbCommand(strSQL, conClasf) 
     Try 
     intRowsAff = cmdClasf.ExecuteNonQuery() 
     Catch ex As Exception 
     lblErrMsg.Text = ex.Message  
     End Try 
     lblRecsAff.Text = intRowsAff & " record(s) inserted" 
     conClasf.Close 
End Sub 

答えて

1

これが原因でエラーが発生する可能性があります。

 "Race, " & _ //Race**,** try to remove , 
") 

はるかに良いあなたはこれをしようとした場合:

あなたはSQLインジェクションを防ぐためにパラメータを使用することができます。

も参照してください:

Parameter Queries in ASP.NET with MS Access

Configuring Parameters and Parameter Data Types (ADO.NET)

Use Parameters in your sql command

・ホープこのヘルプ。

よろしく

+0

これは、これがアクセスされなSQLDbTypeされていないあなたは、これが聖霊降臨祭 – FrankSharp

+0

Sorry..ifこれは、C# – BizApps

+0

に忘れて動作することを確認しています。それを試してみてください。 MS Accessの – FrankSharp

2
は、パスワードフィールドをエスケープ

。予約語Access Engine.です。

strSQL = "INSERT INTO client (UserName,Prenom,Nom,[password],mail, 
      Addresse,Ville,PostalCode,Province,Pays,AnimalGenre,NomAnimal,Race) 
      VALUES 
      (@UserName,@Prenom,@Nom,@password,@mail, 
      @Addresse,@Ville,@PostalCode,@Province,@Pays, 
      @AnimalGenre,@NomAnimal,@Race)" 
関連する問題