Bonjour,

Je vous montre d'abord un exemple de mon code :

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
 
                SqlTransaction trans;
                lock (conn)
                {
                    trans = conn.beginTransaction("tname");
                }
 
                try
                {
                    SqlCommand mcmd = new SqlCommand();
                    lock (conn)
                    {
                        mcmd.Transaction = trans;
                        mcmd.Connection = conn.Connector;
                    }
                    mcmd.CommandText = "DELETE FROM .... " +
                            "INSERT INTO ...";
 
 
                    for (int i = 0; i < lr.Count; i++)
                    {
                        ...
 
                        lock (conn)
                        {
                            mcmd.ExecuteNonQuery();
 
                            if((i % 500) == 0)
                                 trans.Commit();
                        }
                    }
 
                    lock (conn)
                    {
                        trans.Commit();
                    }
                }
                catch (Exception e)
                {
                    trans.Rollback();
                }

En commitant qu'une seule fois, après ma boucle, ça passe, mais je peux avoir à traiter des centaines de milliers de lignes, donc je pensais commiter tous les 500 lignes, est ce que la partie :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
                            if((i % 500) == 0)
                                 trans.Commit();
est correcte?