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 :

Comment lire une base de donnée .txt intégrée en local dans ressources


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Electronicien
    Inscrit en
    Novembre 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Electronicien
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2014
    Messages : 13
    Par défaut Comment lire une base de donnée .txt intégrée en local dans ressources
    Bonjour à tous

    J'ai une base de donnée d'un million de lignes et je voudrais développer un petit soft avec ce fichier intégré en local dans le .exe
    La base est très simple et est formatée comme ceci:

    000000 = 2345
    000001 = 1218
    000002 = 3465
    000003 = 9845
    000004 = 4598
    000005 = 2365
    000006 = 2389
    000007 = 3861
    000008 = 2096
    ...

    Toute la base est faite comme ci: 6 chiffres = 4 chiffres

    Je voudrais donc intégrer ce fichier txt dans les ressources locales et ensuite, sur l'interface graphique, avoir 2 textbox.
    On rempli la première avec les 6 chiffres à chercher (1ère colonne) et on affiche dans la 2ème textbox les 4 chiffres correspondant.

    Je ne peux pas vous présenter mon code pour l'instant car je n'ai aucune idée dans quel sens partir ou quelle terme rechercher sur le forum pour ce que je veux faire

    Merci

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    quand on glisse un fichier texte dans les resources du projet il est transformé en string
    pour le lire il faut faire un truc du genre my.Settings.nom_fichier
    vu que c'est un string tu peux faire un split sur environment.newline (=char10+char13) pour avoir une collection de ligne
    tu parcours ensuite la collection (for ou foreach) là tu peux spliter sur = pour avoir la partie de gauche et la partie de droite
    tu peux faire .trim pour retirer les espaces
    et ensuite tu peux stocker tout ca dans un dictionary<string, string> accessible pour l'appli

    pour connaitre la partie de droite d'une partie de gauche tu auras juste à faire textbox2.text = dic[textbox1.text] (faire un .containskey avant pour vérifier que la valeur est connue sinon ca plante)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre averti
    Homme Profil pro
    Electronicien
    Inscrit en
    Novembre 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Electronicien
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2014
    Messages : 13
    Par défaut
    Bonjour
    Merci pour les conseils
    J'ai fini par trouver en prenant une partie de vos idées

    Afin de simplifier le code, j'ai modifié ma database en en supprimant les " = " par des ";"

    Voici mon code si ça peut servir à d'autres (il est fonctionnel mais peut être pas assez optimisé)

    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
     
                string resource_data = Properties.Resources.Database;
                string[] words = resource_data.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
                string serial = textBox1.Text;
     
                foreach (string lines in words)
                {
                    string code = lines;
                    string code_split;
                    if (lines.Contains(serial))
                    {
                        code_split = code.Substring(7, 4);
                        label1.Text = (code_split);
                    }
                }
            }

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    si tu dois le faire plusieurs fois le mieux est d'utiliser un dictionary<string, string>
    sans ca tu vas relire potentiellement une grosse partie du fichier à chaque fois pour trouver la valeur
    avec le dictionary tu lis une fois le fichier en entier puis c'est en ram indexé et donc le dictionary trouve la valeur très rapidement
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 06/12/2016, 10h15
  2. Réponses: 2
    Dernier message: 16/05/2013, 12h26
  3. Comment créer une base de donnée dans un fichier .txt
    Par vantoff dans le forum C++Builder
    Réponses: 9
    Dernier message: 19/07/2006, 19h44
  4. comment vider une base de donnée
    Par caps_corp dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 21/04/2004, 16h54
  5. Comment acceder à une base de donnée F1.db_ ?
    Par diado dans le forum Autres SGBD
    Réponses: 8
    Dernier message: 26/12/2003, 08h09

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