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 :

Question ODBC en C avec une Base MySQL


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 33
    Par défaut Question ODBC en C avec une Base MySQL
    Bonjour,

    Je souhaiterai envoyer (dans un programme écrit en C) des données dans une base de données MySQL.

    La question est : est-ce que OBDC me permet de faire ça où ne gère t'il que l'accès à ces données ?

    Si OBDC le permet, comment faut-il faire ? J'ai regardé le cours suivant mais il n'y à rien sur la modification des tables.
    http://melem.developpez.com/tutoriels/divers/odbc/

    Si OBDC ne le permet pas, qu'elle API le permet ?

    Merci

    Bonne journée

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Bin la modification des tables (plus précisément des enregistrements dans ton cas) c'est INSERT pour l'insertion, UPDATE pour la modification, DELETE pour la suppression, etc. C'est du SQL, pas du C. Tu peux exécuter ce type de requête comme n'importe quelle autre requête via ODBC.

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 33
    Par défaut
    Merci d'avoir répondu,

    j'ai vu (sur ton cours, depuis mon premier post) qu'on pouvais envoyer des requêtes SQL grâce à cette fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQLExecDirect(stmt, "La requète", SQL_NTS);
    Je ne veux pas faire du SQL en C!!!
    Ma question c'est comment construire et exécuter facilement une requête sql d'ajout de n-uplet dans un programme en C (quelle API utiliser ? , quelle(s) fonction(s)?)

    Le problème là c'est que pour construire ma requête sa va être la galère (bonjour les concaténations... y'aura plus de 100 colonnes dans ma table...).

    Y'a pas d'autre solution que cette fonction ?

  4. #4
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    L'API qui te fait faire le moins de SQL (tu pourras écrire un programme qui manipule des bases de données sans la moindre instruction SQL avec), c'est ADO. C'est une techno Windows (utilisable uniquement sous Windows), mais qui supporte également tous les SGBD connus, comme ODBC. Il y a aussi la version ADO.NET pour la plateforme .NET. Il n'est malheureusement pas aisé d'utiliser ADO en C, pas plus qu'en Java ou en C++. Elle a surtout été faite pour les utilisateurs de VB et VBA.

    ADO est en fait, tout simplement, une encapsulation de OLE DB. OLE DB, c'est donc le moteur qui fait fonctionner ADO. OLE DB ne requiert elle non plus aucune connaissance de SQL et s'utilise généralement en C ou en C++.

    Si t'es sous Windows, et que tu veux manipuler une base de données (MySQL ou pas) en C sans écrire la moindre instruction SQL, utilise donc OLE DB (conseillé) sinon ADO. Sous les autres systèmes, désolé je n'en ai aucune idée.

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 33
    Par défaut
    Je vais regarder à ces APIs.

    Je te remercie de tes réponses ma question première étant peut-on modifier la base grâce à ODBC ?

    J'avais l'impression en lisant ton cours qu'on ne pouvais faire que des consultations (que des SELECT) d'où cette discussion.

    Le problème n'est pas tant le SQL que ma requête risque de ressembler à ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO ma_table (blabla1,blabla2,blabla3,....blabla112,blabla113) value ...
    J'ai peur que ça ralentisse énormément mon code ?

    j'ai pensé à une solution tel que j'insert un n-uplet au début du traitement et je l'update tout au long de mon traitement.

    C'est viable ?

    Je vais mettre ce post en résolu et je m'excuse si ma question à pu paraître non pertinente.

  6. #6
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Je t'avais déjà dit dès ma première réponse que "La requête", dans SQLExecDirect(... "La requête" ...), pouvait être un SELECT, un INSERT, un UPDATE, un DELETE ou encore n'importe quelle autre commande SQL valide.

    J'avais l'impression en lisant ton cours qu'on ne pouvais faire que des consultations (que des SELECT) d'où cette discussion.
    Au lieu d'avoir ouvert cette discussion, tu aurais aussi pu simplement tester toi-même non ?

    Si tu veux insérer de nouvelles données, un INSERT suffit. Ca ne ralentira rien du tout, au contraire, c'est la manière la plus directe. Je ne vois pas l'intérêt de faire un INSERT bidon dans un premier temps et un UPDATE après.

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

Discussions similaires

  1. Erreur ODBC pour se connecter à une base MySQL
    Par Invité dans le forum JDBC
    Réponses: 8
    Dernier message: 09/09/2012, 12h43
  2. [2000] Connection avec une base MySQl
    Par alpachico dans le forum SSAS
    Réponses: 1
    Dernier message: 20/02/2009, 09h14
  3. Réponses: 6
    Dernier message: 26/09/2007, 07h55
  4. Problème avec une base Mysql sur le web
    Par mappy dans le forum Accès aux données
    Réponses: 2
    Dernier message: 08/06/2007, 08h38

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