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'une base de donnée


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Points : 56
    Points
    56
    Par défaut Création d'une base de donnée
    Bonjour,

    Pour un projet MFC sous visual studio 2005, j'aurai besoin de créer, puis de gérer une base de donnée.
    Il s'agit d'une base de donnée qui n'existe pas encore, et qui devra donc être créée par le code c++. J'aurais ensuite besoin de faire des requêtes sql dessus pour ajouter ou lire les données.

    Je ne vois vraiment pas comment m'y prendre. Est ce que quelqu'un a des informations à ce sujet?

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Points : 6 812
    Points
    6 812
    Par défaut
    Je te conseille de chercher des bibliothèques qui te permettent de te connecté à une base de données. Choisi bien ton type de BDD.

    Merci à notre ami ..

    Bon courage dans tes recherches
    Mes Tutos DirectX, OpenGL, 3D : http://raptor.developpez.com/

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut
    Il te faut une base de données embarquée. En C++ il n'y a grosso mode que SqlLite.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Points : 56
    Points
    56
    Par défaut
    Merci, je vais essayer du coté de SqlLite, je fais quelques recherches, et je m'y met.

    Si quelqu'un a un petit exemple sous la main, je suis preneur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Je te conseille de chercher des bibliothèques qui te permettent de te connecté à une base de données. Choisi bien ton type de BDD.
     
    Merci à notre ami :google: .. :king:
     
    Bon courage dans tes recherches
    Ce n'est pas tout à fait ce que je veux faire. Je veux que le programme soit capable de créer une base de donnée si elle n'existe pas. Il me semble que ce type de bibliothèque permet uniquement de gérer une BDD existante.

  5. #5
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,

    Le problème vient du fait que le terme "base de données" a une consonance particulière.

    Or, le simple fait de travailler sur un ou plusieurs fichier(s) contenant des informations structurées sous la forme de "tables" de "champs" et d'"enregistrements" peut être considéré comme une base de données (après tout: il est tout à fait possible de mettre certaines informations en relation avec d'autres dans un fichier texte... regarde, par exemple, ce que permet XML ).

    Et les termes "créer une base de données" peuvent aussi prendre plusieurs sens, allant de "créer les fichiers utilisables par un SGBDR donné" à "fournir l'ensemble des comportements que l'on peut attendre d'une base de données classique".

    Le tout, sans même tenir compte que l'on trouve des base de données relationnelles (telles que Access) qui travaillent de manière plus ou moins indépendantes et des système de gestion de base de données relationnelles (SGBDR) tels que MySQL, Oracle, SQL Server et bien d'autres et qui sont des services permettant... de gérer plusieurs bases de données, et donc, que dans l'optique de ces systèmes, la "création" d'une base de données revient le plus souvent à créer les fichiers nécessaires et à "enregistrer" la base de données créées dans le gestionnaire.

    Ta question n'a donc pas énormément de sens parce qu'elle... représente trop de choses différentes, selon ce que tu souhaite in fine:

    Avec les SGBDR classiques, une fois une connexion établie, tu peux le plus souvent invoquer auprès d'eux une requête de création de base de données (create database), s'il s'agit d'une base de données "indépendante" tu peux généralement t'en sortir en provoquant l'écriture d'un fichier au bon format, et, si tu veux travailler sur base de fichiers texte classiques, il peut te suffire de... créer les fichiers.

    Une chose est sure: hormis pour sqlite, si tu veux utiliser un système de base de données existant (tel que Access, oracle et tous les autres), il s'agira de veiller à ce que ce qui est nécessaire pour permettre l'utilisation du système en question soit installé sur la machine "de production", parce que le volume des choses à installer et les licences t'empêcheront virtuellement de créer une application qui prendra leur installation en charge...

    La question à laquelle je te suggère donc de réfléchir, et à laquelle je te demanderais bien de répondre est "que veux tu faire exactement"
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Points : 56
    Points
    56
    Par défaut
    En fait, je voudrais créer une liste d'utilisateurs ayant accès au logiciel (identifiant et mot de passe), ainsi qu'une table permettant de stocker des nombres aléatoires, avec un identifiant pour savoir dans quel ordre ils ont été entrés.
    Cet identifiant sera sur 3 chiffres (de 000 à 999), et lors d'un dépassement (passage à 1000), je vais écraser la valeur 000.

    Je n'ai donc pas vraiment besoin d'un truc très complexe, mais je voudrais quand même un minimum de sécurité avec le mot de passe.

    Quel type de BDD est le plus approprié selon vous? Est ce qu'un simple fichier avec une extension quelconque serait suffisant? (dans ce cas, comment crypter le mot de passe)

    Merci pour votre aide, je me remet au boulot demain, mais je repasserais dans la soirée pour voir si il y a de nouveaux messages, et pour y répondre.

  7. #7
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Une question supplémentaire s'impose: faut il gérer le fait que deux utilisateurs puissent utiliser l'application en même temps (et donc utiliser le concept client/serveur) ou non

    Pour ce genre de chose, tu pourrais très bien utiliser un simple fichier texte (XML ou autre), et crypter le mot de passe à l'aide d'un des algorithmes en vogue: md5, snake ou autre.

    L'aventage de ces algorithme est qu'ils sont "destructeurs": il n'y a pas vraiment d'autre solution que la "brute force" pour trouver le mot de passe qui correspond à la clé (même s'il est possible de trouver plusieurs mot de passe pour une seule clé, du fait des collisions).

    L'idée générale devient alors de
    1. demander le login et le mot de passe à l'utilisateur
    2. rechercher dans le fichier les informations relatives à l'utilisateur
    3. crypter le mot de passe donné par l'utilisateur et le comparer avec celui qu'on vient de lire dans le ficheir
    4. si c'est identique : ok
    5. si c'est différent : nok -->autre essai ou éjection du programme
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Points : 56
    Points
    56
    Par défaut
    Non, je n'ai besoin que d'un utilisateur à la fois, ce n'est pas un programme client/serveur.

    Je vais suivre tes conseils, et enregistrer tout ça dans un fichier texte. Merci pour les algorithmes de cryptage, je ne savais pas que ça existait (je comptais faire un cryptage "à la main", avec des opérations sur le mot de passe, mais j'avais un peu peur au niveau sécurité).

    Sinon, juste une petite question : comment savoir si je dois utiliser un SGBD, ou si je peux utiliser un fichier texte?
    Est ce que dans ce cas là un fichier texte est plus approprié car il n'y a pas de relations entre mes deux tables?

    Merci en tout cas pour ta réponse rapide, je m'y met cet après midi.
    Je vais donc créer 2 fichiers : un pour les utilisateurs, et un pour les nombres aléatoires.

  9. #9
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Ce sont tes spécifications qui te le font savoir.

    Finalement, une base de données facilite le travail quand tu dois accéder de manière "aléatoire" aux données, et quand les modifications/insertions que tu peux vouloir apporter à une (ou des) donnée(s) sont soumises à des restrictions basées sur... d'autres données existantes.

    Si tu dois gérer des (nombreux) clients, avec plusieurs (nombreuses) factures par client et plusieurs articles par facture, par exemple, et que tu veux retrouver facilement la facture du premier janvier 2000 du client Machin, tu peux, bien sur t'en sortir avec des fichiers séparés, mais cela risque fort de devenir rapidement ingérable: l'utilisation d'une base de données s'avère alors intéressante à envisager.

    Par contre, il faut savoir que les systèmes existants sont, pour la plupart, intrusifs et nécessitent pas mal de ressources pour fonctionner, et pas mal de place sur le disque dur.

    Si donc tu peux arriver à te contenter d'un (ou plusieurs) fichier contenant un nombre restreint de données et qu'il est possible d'apporter une sécurité suffisante pour ces données sans passer par une base de données au sens propre, cela t'évite de sortir le canon pour tuer un moustique
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Points : 56
    Points
    56
    Par défaut
    OK, merci pour toutes ces infos.

    Je m'y met tout de suite. Ca va pas mal me simplifier les choses d'utiliser des fichiers textes, car je ne connais pas trop les fonctions pour accéder à une BDD.

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

Discussions similaires

  1. création d'une base de donnée par programme
    Par lassad dans le forum Bases de données
    Réponses: 9
    Dernier message: 18/10/2005, 16h36
  2. création d'une base de données
    Par cyrilng dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 18/05/2005, 14h38
  3. Réponses: 4
    Dernier message: 22/09/2004, 09h17
  4. Création d'une base de données contenant des images
    Par gandalf_le_blanc dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 16/06/2004, 15h29

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