2011-12-16 3 views
0

Этот мой код в VB.NET.Я не могу вставить значение в мою базу данных доступа

Моя попытка catch говорит о синтаксической ошибке в инструкции 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 , 
") 

Гораздо лучше, если вы попытаетесь это сделать:

Вы можете использовать параметры, чтобы избежать sqlinjection.

Смотрите также:

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 забыл edit..Thanks – BizApps

+0

Это выглядеть с # – FrankSharp

2

Escape the Password field. Это зарезервированное слово 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)" 
Смежные вопросы