begin process at 2010 09 06 12:00:36
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de données

 > REQUETE MYSQL EN C (GCC)

REQUETE MYSQL EN C (GCC)


 Information sur la source

Note :
6,2 / 10 - par 5 personnes
6,20 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Base de données Niveau :Débutant Date de création :04/05/2004 Vu :16 883

Auteur : adoy

Ecrire un message privé
Site perso
Commentaire sur cette source (20)
Ajouter un commentaire et/ou une note

 Description

Cette source vous permetra de vous connecter à une base de donnée MySQL en C sous Linux.

Compilation: gcc mysql.c -o mysql -lmysqlclient

Source

  • #include <stdio.h>
  • #include <mysql/mysql.h>
  • #define MYSQL_HOST "localhost"
  • #define MYSQL_DB "db"
  • #define MYSQL_LOGIN "login"
  • #define MYSQL_PASSWD "pass"
  • int main() {
  • MYSQL mysql;
  • MYSQL_RES *result;
  • MYSQL_ROW row;
  • mysql_init(&mysql);
  • if (!mysql_connect(&mysql,MYSQL_HOST,MYSQL_LOGIN,MYSQL_PASSWD)) {
  • return -1;
  • }
  • if (mysql_select_db(&mysql,MYSQL_DB)) {
  • mysql_close(&mysql);
  • return -1;
  • }
  • mysql_query(&mysql,"SELECT champ1 FROM table1");
  • result = mysql_use_result(&mysql);
  • while((row = mysql_fetch_row(result))) {
  • printf("%s",row[1]);
  • fflush(stdout);
  • }
  • mysql_close(&mysql);
  • return 0;
  • }
#include <stdio.h>
#include <mysql/mysql.h>

#define MYSQL_HOST "localhost"
#define MYSQL_DB "db"
#define MYSQL_LOGIN "login"
#define MYSQL_PASSWD "pass"

int main() {
        MYSQL mysql;
        MYSQL_RES *result;
        MYSQL_ROW row;

        mysql_init(&mysql);
        if (!mysql_connect(&mysql,MYSQL_HOST,MYSQL_LOGIN,MYSQL_PASSWD)) {
                return -1;
        }
        if (mysql_select_db(&mysql,MYSQL_DB)) {
                mysql_close(&mysql);
                return -1;
        }
        mysql_query(&mysql,"SELECT champ1 FROM table1");
        result = mysql_use_result(&mysql);
        while((row = mysql_fetch_row(result))) {
                printf("%s",row[1]);
                fflush(stdout);
        }
        mysql_close(&mysql);
        return 0;
}



 Sources de la même categorie

Source avec une capture CONVERTISSEUR par smartties
Source avec Zip CREATION D'UN FICHIER DBF (EN C) par Stanel
Source avec Zip STRUCTURE DES FICHIERS DBF par Stanel
Source avec Zip Source avec une capture GESTION DES ENTREES/ SORTIES AVEC CODEBARRE par YvaddavY
Source avec Zip Source avec une capture QT4 ET MYSQL par lemda

Commentaires et avis

Commentaire de Kirua le 05/05/2004 14:36:01

je ne sais pas pq, mais moi j'utilise tjs "mysql_real_connect", ça fait quoi comme différence?

aussi, tu dois faire un mysql_close avant tes return -1 pr libérer la mémoire ;)

Commentaire de Juntao le 07/05/2004 01:26:21

Super simple, concis
Tres pratique comme code, merci :)

++

Commentaire de jsonor le 22/06/2004 21:48:01

t'oré pas l'impression d'avoir plagié ma source par hazard... (http://www.cppfrance.com/code.aspx?ID=17636)
peut etre tu ne l'avais pas vu mais enfin ca m'étonnerait...c pas que ca me dérange tant mais bon, ca sert à rien de refourguer des sources qui existent déjà...

Voili voilou

Commentaire de antoine_1977 le 06/07/2004 02:58:41

ton fichier mysql.h et ce qui va avec.... on peut le trouver où?

Commentaire de jsonor le 06/07/2004 22:07:47

tu peux le trouver sur le site de mysql (www.mysql.com)
Fo télécharger les librairies de développement....

Commentaire de LordBob le 31/10/2004 01:42:43

salut, j'ai quelques questions sur ta source (je c kel date un peu mais bon)...
1) #define MYSQL_HOST : ca correspond a quoi en fait? on fait quoi si la base de donnée se trouve en ligne sur le net?
2) tu dis "sous Linux", mais ne peut-on pas la compiler sous win32?
merci par avance pour tes reponses...

Commentaire de antoine_1977 le 01/11/2004 00:06:21

j'ai réussi aussi sur WIN. ce qu'il appelle localhost c juste parcequ'il a sa base de données en local... toi il te suffit de mettre l'adresse de ton serveur sur internet.

Borland C++Builder v6.0

Commentaire de magic_Nono le 15/11/2004 17:29:14

ui, c'est exact

avec
mysql_real_connect( myData,
Host,
User,
Password,
NULL,
Port,
NULL,
0)

Host peut etre une adresse ip, un nom de seveur ou tout simplement localhost.


question:
quelle différence entre
mysql_connect
et
mysql_real_connect
?

Magicalement
++
Nono.

Commentaire de Kirua le 15/11/2004 17:41:25

http://www.yellis.net/docs/mysql/manuel_mysql_connect.html

petite recherche. je me posais la même question, et ce site de doc préconise la version mysql_real_connect

Commentaire de magic_Nono le 15/11/2004 17:44:14

merci

effectivement, donc
mysql_connect est une fonction dépréciée
++

Commentaire de Kirua le 15/11/2004 17:46:50

non, deprecated = elle n'est plus d'usage (désapprouvé). déprécié ça veut dire "qui est moins apprécié", ou par extension qui a perdu de sa valeur. (la valeur d'une voiture se déprécie avec le temps)

Commentaire de magic_Nono le 15/11/2004 17:54:05

l'habitude de lire les doc en anglais et de prendre uniquement ce sens...
merci pour la précision linguistique

Commentaire de Kirua le 15/11/2004 18:13:31

il n'y a pas de mal ;)

Commentaire de gogomanu le 05/09/2006 15:26:32

Merci je cherchais si mon programme C++ windows serait facilement convertible en Linux... hé bien ça aurait été 100 fois plus simple sous Linux parce que l'ADO en C++ sur Windows il faut se le fanner !!!
Je me suis développé une classe qui a des fonctionnalités faciles de lecture/écriture des champs, et là je vois MYSQL_ROW qui a l'air de faire tout ça automatiquement en natif !
J'aurais préféré un "include mysql.h" à la place de MyODBC... J'ai déjà comparé le Service Windows avec le Daemon Linux, en fait tous les développements ont l'air plus simples sur Linux !
Bref merci pour cet exemple !

Commentaire de nicompx le 05/09/2006 15:54:11

Salut,
Je compile mon programme de la façon que vous préconisé mais j'ai l'erreur suivante :
/usr/lib64/gcc/x86_64-suse-linux/4.1.0/../../../../x86_64-suse-linux/bin/ld: ne peut trouver -lmysqlclient
collect2: ld returned 1 exit status

Que faire?

Merci d'avance

Commentaire de jsonor le 05/09/2006 22:47:30

Salut,
il faut installer le client MySQL (www.mysql.com)

Commentaire de pekotaga le 30/03/2007 11:41:16

bonjour message d'un homme au bord de la crise de nerfs suite a de longue(mais alors trés longue)  recherche sur ce sujet j'en arrive toujours a la meme conclusion
undefined reference to''
je sais qu'il faut les librairies mysql ce que j'aie fait je sait qu'il faut ajouter -lmysqlclient mais ce dernier est helas introuvable par mon agl
peut etre qqun aurra il eu des probleme similaires et peut etre pourra on me guider .
merci d'avance pour vos reponse et merci a l'auteur de ce source

Commentaire de bilal le 01/04/2008 17:07:32

comment connaitre tt les fonction possible utilisable en c,c++
si je fait cette requete select * table , cela m'affiche toute la bd mais pas le titre des colonnes !!
1°) comment dois je faire ?
2°) y a t'il autre chose que :
#  MYSQL mysql;
# MYSQL_RES *result;
# MYSQL_ROW row;
3°) comment faire pour connaitre l'info des colonnes d'une table ? Int ; varchar ; date etc ???

Merci

Commentaire de bilal le 01/04/2008 19:19:28

voila j'ai trouve. ;-)
cela affiche le contenu de votre bd dans une grille avec le titre des colonnes.

  MYSQL_RES   * result;
  MYSQL_ROW     elementsColonne;
  MYSQL_FIELD * fields;

  AnsiString titre;

if (mysql_query(conn,"SELECT * FROM table1"))
{
   //("Erreur dans la requête\n");
  return;
}
else
{
   result = mysql_store_result(conn);
   fields = mysql_fetch_fields(result);
   StringGrid1->ColCount = mysql_num_fields(result);
   StringGrid1->RowCount = 0;

for(int i = 0; i < mysql_num_fields(result); i++)
{ titre = fields[i].name;
  StringGrid1->Cells[i][0] = titre;
}

for(unsigned int i = 1; i <= result->row_count; i++)
{
  elementsColonne = mysql_fetch_row(result);
  StringGrid1->RowCount++;

  for(unsigned int j = 0; j<= mysql_num_fields(result); j++)
  StringGrid1->Cells[j][i] = elementsColonne[j];
}

}

Commentaire de hdaniel le 10/11/2009 16:12:23

Pour la différence entre mysql_connect et mysql_real_connect

un extrait de la source en dit long sur l'énooorme différence:

MYSQL *mysql_connect(MYSQL *mysql, const char *host,
                        const char *user, const char *passwd) {
        return mysql_real_connect(mysql,host,user,passwd,NULL,9000,NULL,0);
}

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales