dread_loque
Messages postés16Date d'inscriptionmercredi 11 avril 2007StatutMembreDernière intervention21 mai 2007
-
2 mai 2007 à 09:07
dread_loque
Messages postés16Date d'inscriptionmercredi 11 avril 2007StatutMembreDernière intervention21 mai 2007
-
2 mai 2007 à 14:36
Bonjour,
Je dévellope actuellement une application qui communique avec une BDD Access et effectue différentes manipulations sur celle-ci.
Toutes mes requetes fontionnent bien, sauf qu'il me semble que l'une d'elle prend beaucoup plus de temps qu'elle ne devrait, ce qui empeche le TreeView de se mettre à jour correctement.
Je vous met le code de la mise à jour de TreeView :
//Suppression des tous les noeuds en-dessous de Automates
m_tAuto.Nodes.Clear();
//Construction de la chaine de select
m_sSQLRequest = "SELECT NomAutomate "+
"FROM Automates";
this.m_odbcCommand.CommandText = m_sSQLRequest;
this.m_odbcCommand.Connection = autoDBConn;
//Execution du reader
myReader=m_odbcCommand.ExecuteReader();
//Tant qu'il y a des enregistrements
while(myReader.Read())
{
//Pour j allant de 0 au nombre de colonnes du reader
for(int j=0;j<myReader.FieldCount;j++)
{
//Ajout d'un TreeNode dans Automates avec un nom tiré du reader
m_tAuto.Nodes.Add(myReader[j].ToString());
//Thread.Sleep(1000);
}
}
//Fermeture du reader
myReader.Close();
et le code de la methode qui insere les données dans la BDD :
// Start a local transaction
myTrans = m_odbcConnection.BeginTransaction();
// Assign transaction object for a pending local transaction
m_odbcCommand.Transaction = myTrans;
//Requete d'insertion de données dans la base
m_sSQLRequest = "INSERT INTO Automates (NomProcess, NomAutomate, AdrIP, TypAutomate) "+
"VALUES ('" + m_txtCode.Text +"', '"
+ m_txtName.Text +"', '"
+ m_txtIP.Text +"', '"
+ m_cboType.Text +"')";
this.m_odbcCommand.CommandText = m_sSQLRequest;
this.m_odbcCommand.Connection = m_odbcConnection;
//Execution de la requete d'insertion
m_odbcCommand.ExecuteNonQuery();
myTrans.Commit();
//Fermeture du formulaire
this.Dispose();
Voila... Alors ça fait beaucoup de texte, j'en suis désolé... Mais si quelqu'un pouvais me repondre cela me sortirait de la panade.
Quelques précisions tout de même : si je décommente le Thread.Sleep(1000), la mise à jour du TreeView se fait correctement, autant dire que le problème vient vraiment du temps d'execution de la requete...
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 2 mai 2007 à 09:13
Salut,
Pour commencer, tu peux lire ce poste (qui ne date que de quelques jours); ça ne résoudra peut-être pas tout, pas ça rendra ton code meilleur...
dread_loque
Messages postés16Date d'inscriptionmercredi 11 avril 2007StatutMembreDernière intervention21 mai 2007 2 mai 2007 à 11:25
Merci mais ceci ne me fait pas tellement avancer.
En effet, pour les comparaisons de chaînes de caractères, j'utilise des méthodes d'une classe sealed qui utilisent les RegEx (expressions régulières). Je ne vois donc pas ce qui fait ramer mon programme car je n'ai pas du tout le même problème que cette personne.
D'autant plus qu'il n'y a aucun lag à l'éxécution, tout se passe bien, sauf qu'il faut attendre pour que la base se mette à jour... C'est assez incompréhensible... Mon tuteur de stage et les autres employés n'ont pas pus m'aider, c'est donc pour ça que je me suis tourner vers le net.
En tout cas, merci quand même, surtout pour la rapidité de la réponse.
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 2 mai 2007 à 13:59
Les regex, c'est pas ce qu'il y a de plus rapide...
Et tes requêtes concaténée, c'est pas le pied non plus, regardes le lien que je t'ai donné, il est proposé d'utiliser des requêtes paramétrées...
Maintenant, si le manque de performances se situe pas dans le programme même mais bien lors de l'exécution de te requête, alors c'est peut-être ta requête qui n'est pas bien pensée, voire la conception de ta DataBase qui n'est pas au point ?!
Tu auras éventuellement plus d'infos en posant ta question sur sqlfr.
dread_loque
Messages postés16Date d'inscriptionmercredi 11 avril 2007StatutMembreDernière intervention21 mai 2007 2 mai 2007 à 14:36
Ok merci, je vais essayer ça.
Ca me fait une cinquantaine de requetes SQL à changer donc ça risque de m'occuper un moment
Je te remercie encore une fois.
A bientôt peur-être.