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 :

Création d'un ID unique dans une base XAML [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de yoyo3d
    Homme Profil pro
    Administratif
    Inscrit en
    Avril 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Administratif
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2002
    Messages : 421
    Par défaut Création d'un ID unique dans une base XAML
    Bonjour à tous,

    Je réalise une petite appli de gestion d'aquarium (C# / WPF et Xaml) et je viens de me rendre compte que j’ai déclaré les identifiants uniques de mes objets, mais que je ne les ai jamais initialisés.

    J'ai bien enregistré chaque poisson créé dans ma base xalm, mais je ne sais pas comment faire pour chercher le dernier ID (d'autant plus que pour l'instant il n'y en à pas …puisque je les avais oubliés…)
    Voila comment j'ai construit ma classe "modèle de poisson" sobrement intitulée: "Fiche_wiki_Poisson"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class C_Wiki_Poisson
        {
            ushort ID_Wiki_Poisson { get; set; }
            public string Nom_Wiki_Poisson { get; set; } 
            public string Nomscientific_Wiki_Poisson { get; set; } 
            public string Espece_Wiki_Poisson { get; set; } 
            public string Famille_Wiki_Poisson { get; set; }
            public string Origin_geo_Wiki_Poisson { get; set; } 
    //...etc
    }
    Voila comment j'enregistre les données saisies:

    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
    public partial class Fiche_Wiki_Poisson : UserControl // Wiki_Poisson
        {
            private ObservableCollection<C_Wiki_Poisson> myListeWiki_Poissons;
     
    		public Fiche_Wiki_Poisson(ref ObservableCollection<C_Wiki_Poisson> _tempList)
            {
                InitializeComponent();
                myListeWiki_Poissons = _tempList;
                this.DataContext = myListeWiki_Poissons;
            }
     
            private void Bt_Add_Wiki_Poisson_Click(object sender, RoutedEventArgs e)
            {
                C_Wiki_Poisson tempWiki_Poisson = new C_Wiki_Poisson();
                myListeWiki_Poissons.Add(tempWiki_Poisson);
                Listview_Wiki_Poissons.SelectedItem = tempWiki_Poisson;
                Tbx_Nom_Wiki_Poisson.Focus();
            }
     
            private void Bt_Save_Wiki_Poisson_Click(object sender, RoutedEventArgs e)
            {
     
                XmlSerializer xs_Wiki_Poisson = new XmlSerializer(typeof(ObservableCollection<C_Wiki_Poisson>));
                string filePath = @"\bdd\Wiki_Poisson.xml";
                using (StreamWriter wr_Wiki_Poisson = new StreamWriter(filePath))
     
    // c'est ici que je voudrais tester ma base XAML pour récupérer et incrémenter le dernier ID            
     
                {
                    xs_Wiki_Poisson.Serialize(wr_Wiki_Poisson, myListeWiki_Poissons);
     
                    MessageBox.Show("Données enregistrées");
                }
            }
     
            private void Bt_Suppr_Wiki_Poisson_Click(object sender, RoutedEventArgs e)
            {
                if (Listview_Wiki_Poissons.SelectedItem != null)
                    myListeWiki_Poissons.Remove(Listview_Wiki_Poissons.SelectedItem as C_Wiki_Poisson);
            }
        }
    Ce projet est assez ancien, et j'essaye de l'avancer sur mon temps libre dans un but purement d'apprentissage, donc mon style n'est pas des plus pures…
    merci à tous.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Developpeur
    Inscrit en
    Février 2013
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Février 2013
    Messages : 180
    Par défaut
    Bonjour,

    je ne sais pas si c'est la bonne méthode, mais c'est comme ça que je fonctionne
    normalement c'est la base de donnée qui gère l'identifiant unique ce qui permet de faire une requete pour trouvé celui que l'on veut

    mais si tu le fait en code vaut mieux passer par un GUID (GUID.NEW()), c'est fait pour ça

  3. #3
    Membre éclairé
    Avatar de yoyo3d
    Homme Profil pro
    Administratif
    Inscrit en
    Avril 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Administratif
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2002
    Messages : 421
    Par défaut
    oui sauf que ma base de données n'est qu'un fichier XAML et donc c'est pas comme une base sql ou tu te contente de créer tes tables et d'indiquer quel champs est une clé primaire ou le programme doit faire le reste

    je vais voir pour le GUID (GUID.NEW())

    merci

  4. #4
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Salut,

    Si tu n'as pas d'accès concurrent aux données on pourrait imaginer que tu enregistres pareillement (*) une valeur genre "LastUniqIndex".
    A chaque fois que tu insères un nouvel enregistrement de poisson tu le fait avec cette valeur +1 comme uid, puis tu la mets à jour.

    (*) "pareillement" car je ne sais pas du tout comment fonctionne une -pseudo- base de données en XAML.

  5. #5
    Membre éclairé
    Avatar de yoyo3d
    Homme Profil pro
    Administratif
    Inscrit en
    Avril 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Administratif
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2002
    Messages : 421
    Par défaut
    Salut jopopmk, je ne sais pas ce que tu appelles des accès concurrents aux données, mais imagine une sorte de répertoire de nom dans ton agenda avec Nom / prénom / n°tel pro / n° tel perso.... etc , je dois pouvoir créer, trier, modifier, supprimer (rendre invisible car je souhaite garder des traces de mes poissons morts ) etc.

    mon identifiant unique ne me servira qu'à retrouver un poisson dans une liste et m'afficher toutes les données s'y rattachant... comme un contact dans un répertoire...

    lastuniqueindex c'est l'idée de base, maintenant il faut le retrouver dans mon ficher xaml et c'est la que le ba blaisse...

    voici à quoi ressemble un exemple "d'enregistrement" dans la base de données après serialisation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="utf-8"?>
    <Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Id>123</Id>
      <LastName>Dupond</LastName>
      <FirstName>Jean</FirstName>
    </Person>

  6. #6
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Oki, c'est du XML en fait.

    Alors quelques précisions :
    - des accès concurrents aux données c'est quand plusieurs personnes (programmes, threads ...) essaie d'accéder/modifier/écrire des données en même temps, ce qui n'a pas l'air d'être ton cas,
    - "supprimer pour rendre invisible" c'est ce qu'on appelle une suppression logique (en fait tu mets un flag à true ou false),
    - l'identifiant unique sert normalement avant tout à gérer une contrainte d'unicité, pas toujours nécessaire. Dans ton cas, quand tu vas chercher le poisson "wanda" de l'espèce "poisson pané" d'origine "Captain Igloo" tu te rappelleras que son ID c'est le "713" ? Ou pire le "124a-89uy-plif-plaf-lagi-rafe" (ce que te donne un Global Unique ID - ou GUID) ? Ne vaudrait-il pas mieux baser tes recherches sur le nom ? Ou sur un couple nom/espèces si tu as 2 poissons qui s'appellent Jean-Jacques ?

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/09/2014, 15h40
  2. [MySQL] Création d'un document Word dans une base de données
    Par afifi dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 05/04/2009, 08h50
  3. Requete sql pour création de table dans une base access
    Par Ben156 dans le forum Bases de données
    Réponses: 1
    Dernier message: 17/01/2006, 22h12
  4. [VB.NET] création d'une table dans une base access
    Par smedini dans le forum Accès aux données
    Réponses: 1
    Dernier message: 31/12/2005, 11h53
  5. création d'une table dans une base de donnée accèss
    Par zidenne dans le forum Bases de données
    Réponses: 1
    Dernier message: 25/10/2005, 10h54

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