BDD Access - mon code est trop lent !
Bonjour à tous.
J'ai écris du code mais il est beaucoup trop lent, j'aurai besoin de l'avis d'experts !
Je souhaiterai écrire un programme qui vérifie chaque entrée d'une vieile base de données (sous access). Cette base de données contient une correspondance @mac / noport pour chaque switch d'une entreprise. J'ai écris du code qui me récupère les informations à jour (via telnet) et me retourne ces informations sous forme d'un tableau de 4 colonnes (vlan, @mac, noport, nomduswitch) et qui fait en général 500 à 800 lignes pour un switch. Il y a une trentaine de switch dans l'entreprise.
Pour concevoir mon programme j'ai pensé à faire ainsi :
1) Connexion telnet au switch et récupération de la configuration sous forme d'un tableau (~600 lignes)
2) Recopie de ce tableau dans une table
3) On recommence pour tous les autres switchs
4) Requete SQL pour chaque ligne de la vieile table qui vérifie dans la nouvelle table que les informations sont correctes
J'en suis à l'étape 2 et le code que j'ai écris est très lent !! En effet, il faut 1 minute pour recopier un tableau de 800 lignes dans une table ! Je vous met le code pour que vous jetiez un oeil, j'espère que des malins pour m'aguiller (je me suis aperçu que ce sont les 3 dernières lignes qui font ramer le code).
Voici mon code :
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
| //On parcourt la table
for (int j = 0; j < resultat.GetLength(0); j++)
{
//On fait bouger la progressbar
toolStripProgressBar1.Value++;
//Recopie
TabTxtbox[0].Text = resultat[j, 0];
TabTxtbox[1].Text = resultat[j, 1];
TabTxtbox[2].Text = resultat[j, 2];
TabTxtbox[3].Text = nom_sw[i];
//On prend toute la table
SqlSearch = "select * from " + listBox_tables.SelectedItem;
//Déclaration du data adapteur
OleDbDataAdapter DtaGrid = new OleDbDataAdapter(SqlSearch, Conn);
//Selection ou ajout de la ligne
DtrGrid = DtsGrid.Tables[Convert.ToString(listBox_tables.SelectedItem)].NewRow();
//On parcourt les valeurs
for (int i = 0; i < DttGrid.Columns.Count; i++)
{
DtrGrid[i] = TabTxtbox[i].Text;
}
//Ajout de la ligne à la table
DtsGrid.Tables[Convert.ToString(listBox_tables.SelectedItem)].Rows.Add(DtrGrid);
//On maj la base
CmdGrid = new OleDbCommandBuilder(DtaGrid);
DtaGrid.UpdateCommand = CmdGrid.GetUpdateCommand();
DtaGrid.Update(DtsGrid, Convert.ToString(listBox_tables.SelectedItem));
} |