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

C# Discussion :

Lire mots fichier texte puis enregistrer dans base de données


Sujet :

C#

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 21
    Points : 9
    Points
    9
    Par défaut Lire mots fichier texte puis enregistrer dans base de données
    Bonjour,
    J'aurais besoin d'un petit coup de pouce parce que même en faisant le tour des sites web je n'ai pas trouvé de réponses à mon problème.
    Je vous explique mon problème.
    J'ai un fichier texte dans lequel il y a des données écrites dans ce style là :

    Nom : Jean Claude
    Prénom : Duss
    Age : 21

    Je voudrais récupérer les infos se trouvant après les ":" pour ensuite les stocker dans une base de données ( SQL server)
    Je ne sais pas si je dois d'abord stocker ces infos dans des variables ou un tableau ? et comment faire pour lire et conserver que les données dont j'ai besoin?

    Merci d'avance pour votre aide

  2. #2
    Membre confirmé
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 339
    Points : 586
    Points
    586
    Par défaut
    Bonjour,

    Le fait de stocker tes données dans des variables ou des tableaux dépend de la conception de ton application. C'est à toi de déterminer si tu as besoin de les conserver après l'insertion dans ta base de données, par exemple.

    Dans le cas où ton fichier ne contient que ces trois lignes, tu peux faire ceci :

    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
    string nom, prenom, age;
    StreamReader monStreamReader = new StreamReader(fichier, Encoding.Default);
    string ligne = monStreamReader.ReadLine();
    char[] sep = { ':' };
     
    // récupérer le nom
    string tab[] = ligne.Split(sep);
    nom = tab[1].Trim(); // enlever les espaces éventuels
     
    ligne = monStreamReader.ReadLine();
     
    // récupérer le prénom
    tab[] = ligne.Split(sep);
    prenom = tab[1].Trim(); // enlever les espaces éventuels
     
    ligne = monStreamReader.ReadLine();
     
    // récupérer l'age
    tab[] = ligne.Split(sep);
    age = tab[1].Trim(); // enlever les espaces éventuels
     
    ligne = monStreamReader.ReadLine();
     
     
    // requete SQL
     
    // Fermeture du StreamReader 
    monStreamReader.Close();
    Bien évidemment, tu peux ensuite l'adapter : as-tu plus de lignes dans ton fichier ? As-tu plusieurs fichiers à lire à la suite ? Est-il nécessaire de mettre en place une boucle ? Etc.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 21
    Points : 9
    Points
    9
    Par défaut
    Bonjour,
    Merci pour la réponse très rapide et pertinente.
    Concernant mon application, j'ai 12lignes à récuperer, chaque champs est différent et je dois récuperer ces informations sur plusieurs fichiers texte.
    Une fois dans ma base de données je n'ai plus besoin de conserver les informations.

    Visual me pose des problèmes avec la déclaration de tableau et trim() est ce normal?

    Merci pour l'aide

  4. #4
    Membre confirmé
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 339
    Points : 586
    Points
    586
    Par défaut
    Pour les problèmes de déclaration, c'est possible, j'ai écrit une partie du code de tête.
    Montre-moi les erreurs si besoin

    Puisque tu as 12 lignes dans chaque fichier, et en considérant que chaque fichier soit ordonné de la même manière, tu peux utiliser un ArrayList où tu stockeras les champs en question.
    Lorsque toutes les données du fichier sont lues, tu peux faire ta requête SQL.

    Puisque tu as plusieurs fichiers, tu peux de même boucler sur la liste des fichiers par exemple.

    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
    ArrayList fichiers = new ArrayList( ... );
    ArrayList donnees = new ArrayList();
     
    char[] sep = { ':' };
    string[] tab;
     
    foreach (ListItem fic in fichiers.Items)
    {
       StreamReader monStreamReader = new StreamReader(fic, Encoding.Default);
       string ligne = monStreamReader.ReadLine();
       while (ligne != null)
       {
          tab = ligne.Split(sep);
          donnees.Add(tab[1].Trim());
       }
     
       // tableau de données rempli
       // insertion dans la base de données
     
       // vider le ArrayList donnees
     
       // Fermeture du StreamReader 
       monStreamReader.Close();
     
    }

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 21
    Points : 9
    Points
    9
    Par défaut
    Oui mes fichiers seront tous ordonnés de la même manière.
    Par contre je ne saisie pas trop comment faire mon for each ?
    Et que dois je mettre dans mon arraylist fichier ?
    Merci bcp

  6. #6
    Membre confirmé
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 339
    Points : 586
    Points
    586
    Par défaut
    Excuse-moi, j'ai oublié de tout expliquer.

    Dans mon exemple, le arraylist "fichiers" contient les noms de tous tes fichiers.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ArrayList fichiers = new ArrayList( ... );
    fichiers.Add("personne1.txt");
    fichiers.Add("personne2.txt");
    fichiers.Add("personne3.txt");
    fichiers.Add("personne4.txt");
    ...
    Le foreach de mon exemple se contente de passer un par un le nom des fichiers pour faire les actions suivantes : l'ouvrir, créer un nouveau arraylist avec toutes les données, le fermer, faire la requete SQL, vider le arraylist donnees. Deuxième tour de boucle foreach : le deuxieme fichier. Actions, etc.

    Est-ce que je suis plus claire ?

  7. #7
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 21
    Points : 9
    Points
    9
    Par défaut
    Oui c'est plus claire merci beaucoup.
    J'ai essayé en suivant la méthode avec l'arraylist mais j'ai une erreur :
    "l'index se trouve en dehors des limites du tableau"
    voilà mon code qui pourra surement aidé
    Merci pour votre aide
    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
     
                string [] tab;
                string ligne = null;
                ArrayList donnees = new ArrayList();
                char[] sep = { ':' };
     
     
                StreamReader fluxInfos = null;
                try 
                {
                using (fluxInfos = new StreamReader(@"D:\Gestion_Licence\test.txt")) 
                    {
                        ligne = fluxInfos.ReadLine();
     
                        while (ligne != null)
                        {
     
                            tab = ligne.Split(sep);
                            donnees.Add(tab[1].Trim());
                        }
                        fluxInfos.Close();
                    // Affichage du fichier texte
                        /*while (ligne != null) 
                        {
                        Console.WriteLine(ligne);
                        ligne = fluxInfos.ReadLine();
     
                        }
                        System.Console.ReadKey(); */
                    }
                } catch (Exception e) {
                Console.WriteLine("L'erreur suivante s'est produite : " + e.Message);

  8. #8
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 21
    Points : 9
    Points
    9
    Par défaut
    Je ne comprend pas pourquoi j'arrive a afficher tab[0] c'est à dire les caractères avant les ":" mais lorsque jessai dafficher tab[1] j'obtient l'erreur
    "index hors des limites du tableau"
    ?

  9. #9
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 21
    Points : 9
    Points
    9
    Par défaut
    J'ai reussi a corriger mon pb avec un test "if" de cette manière car la première ligne de mon fichier ne comportait pas de ":"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (tab.Length > 1)
     {
     Console.WriteLine(tab[1]);                           
     }
    j'aimerai maintenant pouvoir afficher tab[1] dans une textbox ? comment dois-je proceder ?
    car textbox.text accept un string ?
    Merci

  10. #10
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 21
    Points : 9
    Points
    9
    Par défaut
    J'ai trouvé comment faire pour afficher mon tableau
    il faut procéder de la manière suivante


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    string[] tab1 = new string[12];
    tab1 =  aff_fich(nomFichier); // aff_fich est la fonction précédente permettant la lecture et le stockage des mots du fichier texte
               for (int i = 0; i <= 11; i++)
                    {
                          textBox4.Text += tab1[i];
                          textBox4.Text += "\r\n";
                     }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Oracle] Découpage d'un fichier .txt puis insertion dans base mysql
    Par laetiheu dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 20/08/2016, 12h52
  2. [Débutant] Lire des fichiers texte en boucle dans un programme
    Par niepoc dans le forum MATLAB
    Réponses: 6
    Dernier message: 20/05/2008, 18h05
  3. Lire un fichier text et écrire dans une table oracle
    Par naima2005 dans le forum VB.NET
    Réponses: 6
    Dernier message: 28/12/2007, 11h35
  4. Réponses: 20
    Dernier message: 23/03/2006, 16h21
  5. Réponses: 1
    Dernier message: 24/11/2004, 16h54

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