IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

insertion dans une BD trop lente


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 33
    Par défaut insertion dans une BD trop lente apartir d'1 fichier txt
    J'ai un fichier txt de t'aille 1 mo contenant 905 ligne
    j'ai exporté son contenu avec File.ReadAllLines(path) puis
    j'ai selectionné les ligne par un foreach
    j'ai enlevé les espace avec un split
    le probléme c que l'insertion ,dans une bd, ligne par ligne et trop lente
    est ce que c possible d'inseré toute les ligne par une seule commande ou........?
    est ce que un dataApdater résoudrer le probléme?
    merci

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Montre nous ton code car pour un fichier aussi petit, je comprend pas que cela soit lent pour insérer dans la BDD....

  3. #3
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 33
    Par défaut voila le 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
    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
     
     
           string chemin(string aer)
            {
                **************************
                return che;
            }  
     
            private void button1_Click(object sender, EventArgs e)
            {   
                //pour obtenire le chemin du fichier
     
              string p = @chemin("\\xxxxxxxx");
                //faire l'insertion dans la bd
    		insert(p);
     
    	 p = @chemin("\\yyyyyyyyyyyy");
               insert(p);
                p = @chemin("\\zzzzzzzzzzzzzzzzzzz");
               insert(p);
     
            }
        }
    }
     void insert(string path)
            {
                int rs;
     
    	//verifie si le fichier dans le chemain spésifier existe ou non
                OdbcConnection cn = new OdbcConnection("Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\\aaaaaaaaaa\\DB.mdb");
                if (File.Exists(path) == true)
                {
     
                    try
                    {
     
                        cn.Open();
                    }
                    catch
                    {
                        MessageBox.Show("Failed to connect to data source", "DB");
                    }
                    finally
                    {//extraction de tout le document
                        string[] readText = File.ReadAllLines(path);
                        //extraction ligne par ligne
                        foreach (string s in readText)
                        { //supprission des espaces
                            string[] stringSeparators = new string[] { "	" };
                            string[] result = s.Split(stringSeparators, StringSplitOptions.None);
     
    			OdbcCommand comm = new OdbcCommand("insert into SSP2006(Caisse,Datecaisse,NF,MTF) values(?,?,?,?)", cn);
                            comm.Parameters.Add("Caisse", Convert.ToInt32(result[0]));
                            comm.Parameters.Add("Datecaisse", result[1]);
                            comm.Parameters.Add("NF", @Convert.ToInt32(result[2]));
                            comm.Parameters.Add("MTF", @Convert.ToDouble(result[3]));
                            rs = comm.ExecuteNonQuery();
                            comm.Parameters.Clear();
     
     
                        } 
     
                    } cn.Close();
                    int i = 0;
                    while (i < 7000)
                    {
                        PB1.Value = i;
                        i = i + 1;
                    }
                }
                else MessageBox.Show("Vérifier le date du fichier", "erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
     
     
            }

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 166
    Par défaut
    En utilisant une transaction ca ira deja bcp mieux normalement/

  5. #5
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 33
    Par défaut explique
    En utilisant une transaction ca ira deja bcp mieux normalement/
    comment faire cette transaction

  6. #6
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    Utilise OleDbConnection/OledDbCommand à la place de OdbcConnection/OdbcCommand. C'est mieux approprié pour les bases de données Access.


    Et une petite remarque, on utilise plutôt le finally pour libérer les ressources et non pour effectuer un long traitement qui pourrait générer une exception. Le bloc try est fait pour ça.

Discussions similaires

  1. [debutant]insertion dans une BDD
    Par EssaiEncore dans le forum ASP
    Réponses: 7
    Dernier message: 10/02/2005, 14h58
  2. INTERBASE 5.5 insertion dans une colonne BLOB
    Par mariustrezor dans le forum Bases de données
    Réponses: 4
    Dernier message: 29/10/2004, 18h06
  3. Extraction d'un .txt et Insertion dans une table
    Par PoPmiSiR dans le forum Access
    Réponses: 8
    Dernier message: 28/10/2004, 19h13
  4. Détection insertion dans une Table
    Par abelman dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 06/07/2004, 14h24
  5. [LG]Tri par insertion dans une liste chainée
    Par mister_dsg dans le forum Langage
    Réponses: 4
    Dernier message: 18/12/2003, 22h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo