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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.