Freeze sur OleDbCommand.ExecuteNonQuery()
Bonjour,
Je reviens vers vous car je me prend la tête sur une requête depuis ce matin ... :(
Je fais une petite application pour formater les noms et prénoms d'une base Oracle, dans mon appli j'ai une listview de 3 colonnes (id, nom, prenom) chargée depuis une base Oracle, ce matin je me suis battu avec cette exception (http://www.developpez.net/forums/d12...contexte-com-/) mais j'ai réglé le problème.
Là le souci est autre, j'ai une procédure insertSGBD, qui boucle les items de ma listview pour mettre à jour la BDD, seulement voilà lorsque j'arrive à la ligne de l'executeNonQuery, l'appli freeze et on ne peut plus rien faire ...
J'ai essayé d'abord avec un DataAdapter.Update(DataSet), freeze, puis avec la requête en dur dans l'OleDbCommand, freeze, et enfin avec la requête paramétrée, freeze...
Je vois vraiment pas, je n'ai pas d'exception, message d'erreur, etc
En fenêtre de sortie j'ai des lignes et des lignes de Le thread '<Sans nom>' (0xf80) s'est arrêté avec le code 0 (0x0).
Auriez-vous une idée ?
Je vous mets la dernière méthode utilisée (requête paramétrée)
EDIT: J'ai testé avec seulement 6 personnes dans la listview et freeze quand même.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| Public Sub updateSGBD()
Dim updateCommand As OleDbCommand = Nothing
Dim compteur As Integer = 0
Dim req As String
Try
con = New OleDbConnection("Provider=OraOLEDB.Oracle;Data Source=" & Db & ";User ID=" & user & ";Password=" & pwd & ";")
con.Open()
Using con
For Each lstItem As ListViewItem In LstViewAvant.Items
req = "UPDATE PERSONNE SET NOM='@nom', PRENOM='@prenom' WHERE NM_IDENTIF_PERSONNE='@id'"
updateCommand = New OleDbCommand(req, con)
With updateCommand.Parameters
.Add(New OleDbParameter("@nom", OleDbType.BSTR))
.Add(New OleDbParameter("@prenom", OleDbType.BSTR))
.Add(New OleDbParameter("@id", OleDbType.Integer))
End With
With updateCommand
.Parameters("@nom").Value = formaterCaracteresSpeciaux(lstItem.SubItems(1).Text.ToUpper)
.Parameters("@prenom").Value = formaterCaracteresSpeciaux(lstItem.SubItems(2).Text.ToUpper)
.Parameters("@id").Value = lstItem.Text
End With
updateCommand.ExecuteNonQuery()
compteur += 1
Debug.WriteLine(lstItem.Text & " ------ " & compteur.ToString)
Next
End Using
Catch ex As System.Exception
MsgBox(ex.ToString)
Finally
updateCommand.Dispose()
End Try |
Merci d'avance.