Temps execution requete pour AutoCompleteSource

[Résolu]
Signaler
Messages postés
97
Date d'inscription
lundi 2 mai 2005
Statut
Membre
Dernière intervention
21 mars 2008
-
Messages postés
97
Date d'inscription
lundi 2 mai 2005
Statut
Membre
Dernière intervention
21 mars 2008
-
Bonjour a tous,
Je souhaite faire une saisie semi-automatique sur un champs texte via AutoCompleteSource, a partir d’un champs d'une table de ma base de données.
Le problème est qu'il y a beaucoup d'enregistrements dans ma table, et donc la requête met beaucoup trop de temps à s'exécuter (je l'effectue au chargement de ma page).

Peut-on faire en sorte que la requête s'effectue comme en VirtualMode d'un datagridview?
(ou que ca se charge "petit a petit")?
Je suis sous visual c# express 2005, et j'exploite une base MySQL via MySQL Connector NET 1.0.8 (j'utilise donc : using MySql.Data.MySqlClient;)

voici mon code :

private void MaForm_Load(object sender, EventArgs e)
{
    String requete = "SELECT MonChamps FROM MaTable";
    try
    {
        //active l'autocomplétion
        MonTextBox.AutoCompleteSource = AutoCompleteSource.CustomSource;
        //mode de l'autocomplete
        MonTextBox.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
       
        string connection_bdd = "Database=MaBase;Data source=localhost;User Id=root;Password=";
        ma_connection.ConnectionString = connection_bdd;

        ma_connection.Open();
       
        MySqlCommand cmd_autocompletion = new MySqlCommand(requete, ma_connection);
        MySqlDataReader exe_autocompletion = cmd_autocompletion.ExecuteReader();

        while (exe_autocompletion.Read())
        {
            //ajoute un élément a ma liste de saisie semi-auto.
            MonTextBox.AutoCompleteCustomSource.AddRange(new String[] { exe_autocompletion.GetString(0)});
        }
        exe_autocompletion.Close();
        ma_connection.Close();
    }
    catch (MySqlException ex)
    {
        MessageBox.Show("Erreur SQL:\n" + ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

en d'autres termes : HEEEEEEEEEELPPPPPPPPPP SVP !!!!!!!!!!!!!!

5 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
tu peux déjà charger tes données dans un autre thread... ca permettra d'éviter de figer ta fenêtre.

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Messages postés
97
Date d'inscription
lundi 2 mai 2005
Statut
Membre
Dernière intervention
21 mars 2008
3
merci beaucoup de répondre aussi vite
je vais test ca et je te tien au courrant
Messages postés
97
Date d'inscription
lundi 2 mai 2005
Statut
Membre
Dernière intervention
21 mars 2008
3
Merci
beaucoup c’est nikel !!!!!!!!!!!!!!!





Par contre
ça risque pas de poser problème si j’effectue une autre requête dans mon évènement
OnLoad, si mon opération dans le thread n’est pas fini









(au cas ou ça mettrait vraiment beaucoup de temps, en
pensant que j’ai mais mon thread dans le constructeur de ma class)
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
si tu fais une requête dans un autre thread : pas de souci... par contre évite de mettre à jour le même controle ;)

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Messages postés
97
Date d'inscription
lundi 2 mai 2005
Statut
Membre
Dernière intervention
21 mars 2008
3
vi
et encore merci!