Salut,

j'exécute une procédure stockée de nombreuses fois, cependant, les performances sont assez mauvaises, l'exécution de 10000 fois la procédure stockeé prend 5-6 Minutes je l'exécute de la façon suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
transaction.Parametre("@nom_table", Me.ComboBox_listetables.Text)
transaction.Parametre("@champs", champ)
Console.WriteLine(champ)
transaction.Parametre("@data", tablodata(i).Replace(",", Chr(34) + "," + Chr(34)))
transaction.Execute()
Application.DoEvents()
sachant que transaction est un objet de la classe suivante :

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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
PublicClass ...
PrivateShared _Sql_Conx AsNew OleDb.OleDbConnection 
PrivateShared _Sql_Cmd AsNew OleDb.OleDbCommand 
PrivateShared _Sql_Adp AsNew OleDb.OleDbDataAdapter 
 
PublicFunction OpenConnexion(ByVal Str_Chaine_Connexion AsString) As OleDb.OleDbConnection
EndFunction
'Définition d'une connexion SQL a l'aide du nom du serveur et le nom de la base de données
PublicFunction OpenConnexion(ByVal Str_Server AsString, _
ByVal Str_Bd AsString) As OleDb.OleDbConnection
Try
With _Sql_Conx
.ConnectionString = "Server=" & Str_Server & "; Integrated Security=SSPI; DataBase=" & Str_Bd
.Open()
.CreateCommand()
EndWith
Return _Sql_Conx
Catch ex As Exception
Throw ex
EndTry
EndFunction
'Définition d'une commande pour exécuter une procédure stockée
PublicSub Command(ByVal Str_Nom_Procedure AsString)
Try
Dim Sql_Cmd AsNew OleDb.OleDbCommand
With Sql_Cmd
.CommandText = Str_Nom_Procedure
.Connection = _Sql_Conx
.CommandType = CommandType.StoredProcedure
EndWith
_Sql_Cmd = Sql_Cmd
Catch ex As Exception
Throw ex
EndTry
EndSub
#Region " Types de paramétres "
'Pour un valeur de type entier avec le nom du paramètre
PublicSub Parametre(ByVal Str_Nom_Parametre AsString, _
ByVal Int_Valeur AsInteger)
Try
Dim _Sql_prm AsNew OleDb.OleDbParameter
_Sql_prm = _Sql_Cmd.Parameters.Add(Str_Nom_Parametre, SqlDbType.Int)
_Sql_prm.Value = Int_Valeur
Catch ex As Exception
Throw ex
EndTry
EndSub
'Pour une valeur de type chaîne de caractère avec le nom du paramètre
PublicSub Parametre(ByVal Str_Nom_Parametre AsString, _
ByVal Str_Valeur AsString)
Try
Dim _Sql_prm AsNew OleDb.OleDbParameter
_Sql_prm = _Sql_Cmd.Parameters.Add(Str_Nom_Parametre, SqlDbType.VarChar)
_Sql_prm.Value = Str_Valeur
Catch ex As Exception
Throw ex
EndTry
EndSub
'Pour une valeur de type booléen avec le nom du paramètre
PublicSub Parametre(ByVal Str_Nom_Parametre AsString, _
ByVal Bln_Valeur AsBoolean)
Try
Dim _Sql_prm AsNew OleDb.OleDbParameter
_Sql_prm = _Sql_Cmd.Parameters.Add(Str_Nom_Parametre, SqlDbType.Bit)
_Sql_prm.Value = Bln_Valeur
Catch ex As Exception
Throw ex
EndTry
EndSub
'Pour une valeur de type date avec le nom du paramètre
PublicSub Parametre(ByVal Str_Nom_Parametre AsString, _
ByVal Dt_Valeur As DateTime)
Try
Dim _Sql_prm AsNew OleDb.OleDbParameter
_Sql_prm = _Sql_Cmd.Parameters.Add(Str_Nom_Parametre, SqlDbType.DateTime)
_Sql_prm.Value = Dt_Valeur
Catch ex As Exception
Throw ex
EndTry
EndSub
#EndRegion
'Permet d'exécuter la commande
PublicSub Execute()
Try
Console.WriteLine(_Sql_Cmd.CommandText)
_Sql_Cmd.ExecuteNonQuery()
_Sql_Cmd.Parameters.Clear()
Catch ex As Exception
MsgBox("You don't have the right to insert this data, please contact your administrator!")
'Application.ExitThread()
EndTry
EndSub
'Récupère le enregistrement dans un DataSet
'Ferme la connection SQL
PublicSub CloseConnexion()
Try
_Sql_Conx.Close()
Catch ex As Exception
Throw ex
EndTry
EndSub
EndClass