begin process at 2012 02 05 05:39:33
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de données

 > REQUÊTE SUR UN SERVEUR MYSQL

REQUÊTE SUR UN SERVEUR MYSQL


 Information sur la source

Note :
7,86 / 10 - par 7 personnes
7,86 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Base de données Classé sous :mysql, base, données, database, api Niveau :Débutant Date de création :02/11/2003 Date de mise à jour :21/01/2004 16:04:48 Vu / téléchargé :23 032 / 1 831

Auteur : jsonor

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

 Description

Voici un exemple de code sur un sujet peu développé sur ce forum.
Ce programme permet de se connecter à un serveur MySQL, y exécuter des requêtes et en afficher les résultats (s'il y en a).
Ce programme utilise l'API en C fournie avec MySQL (nul besoin de MySQL++).

MAJ du 21/01/04 : il y avait une faute dans l'ordre des arguments de la fonction mysql_real_connect ....J'ai rajouté la source dans un zip aussi.

Source

  • #include <stdio.h>
  • #include <stdlib.h>
  • #include <unistd.h>
  • #include <mysql/mysql.h>
  • void requete(MYSQL *conn)
  • {
  • MYSQL_RES *result;
  • MYSQL_ROW elementsColonne;
  • unsigned int nbColonnes;
  • int i;
  • if (mysql_query(conn,"SELECT * FROM nom_table"))
  • {
  • printf("Erreur dans la requête\n");
  • return;
  • }
  • else // requête bonne, traitons les données qu'elle renvoit
  • {
  • result = mysql_store_result(conn);
  • if (result != NULL) // MySQL peut extraire des résultats
  • {
  • nbColonnes = mysql_num_fields(result);
  • // récupère les enregistrements un par un
  • while ((elementsColonne = mysql_fetch_row(result)))
  • {
  • for (i = 0; i < nbColonnes; i++)
  • printf("%s\t", (elementsColonne[i] != NULL) ? elementsColonne[i] : "NULL");
  • printf("\n");
  • }
  • // on libère la mémoire prise pour les résultats
  • mysql_free_result(result);
  • }
  • else
  • printf("Aucun résultat à la requête !\n");
  • }
  • }
  • int main(int argc, char*argv[])
  • {
  • MYSQL *conn;
  • // initialisation
  • if((conn = mysql_init(NULL)) == NULL)
  • {
  • printf("Erreur d'initialisation\n");
  • return 0;
  • }
  • // connexion au serveur (ici, en local)
  • if(mysql_real_connect(conn,"localhost","nom_utilisateur","mot_de_passe","nom_base",0,NULL,0)==NULL)
  • {
  • printf("Erreur de connexion\n");
  • return 0;
  • }
  • // on lance la requête
  • requete(conn);
  • // on ferme la connexion au serveur MySQL
  • mysql_close(conn);
  • }
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <mysql/mysql.h>


void requete(MYSQL *conn)
{
	MYSQL_RES *result;
	MYSQL_ROW elementsColonne;
	unsigned int nbColonnes;
	int i;

	if (mysql_query(conn,"SELECT * FROM nom_table"))
	{
		printf("Erreur dans la requête\n");
		return;
	}
	else // requête bonne, traitons les données qu'elle renvoit
	{
		result = mysql_store_result(conn);
		if (result != NULL)  // MySQL peut extraire des résultats
		{
			nbColonnes = mysql_num_fields(result);

			// récupère les enregistrements un par un
			while ((elementsColonne = mysql_fetch_row(result)))
			{
				for (i = 0; i < nbColonnes; i++)
					printf("%s\t", (elementsColonne[i] != NULL) ? elementsColonne[i] : "NULL");
				printf("\n");
			}
			// on libère la mémoire prise pour les résultats
			mysql_free_result(result);
		}
		else
			printf("Aucun résultat à la requête !\n");
	}
}


int main(int argc, char*argv[])
{
	MYSQL *conn;

	// initialisation
	if((conn = mysql_init(NULL)) == NULL)
	{
		printf("Erreur d'initialisation\n");
		return 0;
	}

	// connexion au serveur (ici, en local)
	if(mysql_real_connect(conn,"localhost","nom_utilisateur","mot_de_passe","nom_base",0,NULL,0)==NULL)
	{
		printf("Erreur de connexion\n");
		return 0;
	}
	
	// on lance la requête
	requete(conn);

	// on ferme la connexion au serveur MySQL
	mysql_close(conn);
}

 Conclusion

Ici, le header est "mysql/mysql.h", car je l'ai fait sous linux et que sous linux, il se trouve dans le répertoire "usr/include/mysql/".
Sous windows, cela doit être sensiblement la même chose.

Posez moi vos questions si ya ;)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip THREADS SOUS LINUX

 Sources de la même categorie

GESTION DE FICHIER ET DOSSIER + AUTRES par shinji63
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

 Sources en rapport avec celle ci

Source avec Zip VIDER ELEMENTS DE CORBEILLE WINDOWS7 (WIN64) par BruNews
Source avec Zip Source avec une capture FIND TEXT (WIN64) par BruNews
Source avec Zip CLASS POUR INTERACTION AVEC BASE DONNÉE MYSQL par MrCapo
Source avec Zip Source avec une capture EXEMPLE D'UTILISATION DE L'API MYSQL AVEC VC2005 EXPRESS EDI... par simaxe25
Source avec Zip GERER À UNE BASE DE DONNÉE ACCESS VIA UN COM OBJET EN C++ par PACAL7585

Commentaires et avis

Commentaire de DevelMan le 17/02/2004 15:14:12

Bonjour,
J'essaie de compiler sous Redhat 9, mais suis debutant et j'ai plein d'erreurs de compile ! je fais cc  ServeurMysql.cpp
et j'ai pleins de ref indefinies (mysql_querry, mysql_store_result ...) pourtant mysql.h existe bien dans /usr/include
Merci d'avance

Commentaire de jsonor le 17/02/2004 21:27:48

salut
il faut linker lors de la compilation avec la libraire mysql ...donc qd tu compiles, fo faire "gcc -o ServeurMysql.cpp servuer.exe -lmysqlclient"
(-l pour link et ensuite, le nom de la librairie : mysqlclient, des fois c simplement mysql, fo tester)

Commentaire de DevelMan le 17/02/2004 22:08:33

Super ! merci ! çà marche !

Commentaire de youl71 le 25/02/2004 13:41:16

J'ai essayé sous windows avec borland mais apparement la librairie #include &lt;unistd.h&gt; et celle pour utiliser mysql de sont pas reconnues.
Est ce que quelqu'un saurait lesquelles il faut utiliser?

Commentaire de jsonor le 26/02/2004 00:06:47

pour avoir les librairies de mysql, il faut aller sur www.mysql.com télécharger les librairies et/ou pack développement qui contiendra toutes les librairies nécessaires. Pour ce qui est de unistd.h, je l'ai utilisée pour faire un sleep que je n'ai même pas réutilisée dans le source il me sembe, donc tu peux l'enlever...

Commentaire de m10s11 le 03/03/2004 16:31:27

salut
j'essaye ton code sur Visual C++ or même prob que youl71 or g télécharger la librairie sur le site et maintenant?
Merci d'avance a++
m10s11

Commentaire de oliverman le 03/03/2004 19:09:15

Salut,
j'ai essayé ton code sous Vc++ 7, et je me retrouve avec le message "Erreur de connexion Press any key..."

J'ai mis "mysql.h" pour vc++6 du site www.mysql.com, et j'ai rajouté winsock.h pour les sockets, mais je maitrise pas trop les sockets.

Tas pas une idee d'ou ça pourrai venir???
Merci

Commentaire de jsonor le 03/03/2004 19:25:45

salut,
Je pense que ca doit venir de ta version de Vc++..en effet, la version correspond à la version .NET, et ç'est peut être des pb liés au .NET. De plus, tu as mis la version pour Vc++6 des packages mysql, donc ya sûrement des pb avec la version 7...tout ne doit pas passer....je ne vois pas de solutions...dsl...le mieux, c d'essayer avec la version 6..ou alors sous linux....
@+
Jérôme

Commentaire de jsonor le 03/03/2004 19:30:08

Réponse à ms10s11 (désolé, j'avé pas vu ton msg en premier) :
normallement, si le pack de mysql est bien installé, les librairies sont reconnues par VC++...pour vérifier que tout est bien installé, regarde si mysql.h est bien dans le même rep que les autres fichiers inclus comme stdlib.h...sinon, change ton #include pour qu'il aille au bon endroit :
#include "c:\mysql\mysql.h"
sinon, fo peut être réinstaller le pack.
@+
Jérôme

Commentaire de m10s11 le 04/03/2004 16:41:35

merci pour ta réponse et maintenant g le même probleme que oliverman : "erreur de connexion".
Peux tu donner un exemple concret pour "mysql_real_connect(conn,"?","?","?","?",0,NULL,0)"
    car je fais : mysql_real_connect(conn,host,utilisateur,pass,nomDB,0,NULL,0) avec host = "je sais pas quoi mettre" pour le reste nom utilisateur, mot de pass et nom DB.
merci d'avance
m10s11

Commentaire de jsonor le 05/03/2004 19:49:55

le paramètre "host" correspond au poste par lequel tu te connectes à mysql. Dans mon exemple , j'avé mis "localhost", car la base était sur mon pc, et je m'y connecté de ce pc. Donc "localhost" est un exemple. "127.0.0.1" en est un autre (équivalent de localhost).
Tu peux mettre d'autres hôtes. Le seul truc, c qu'il fo que mysql soit configuré pour y accéder d'un autre pc dans ce cas. (Tu le vois dans la base de données nommée "mysql" et dans la table "user" il me semble. Tu as un champ "host").
Enfin pour commencer, teste "localhost", pour te connecter du même pc. J'imagine que t'es dans ce cas.

voici une page de doc en français sur les fonctions mysql en C : http://www.mysql.com/doc/fr/C.html

N'hésites pas si t'as d'autres pb ! @+
Jsonor.

Commentaire de GRenard le 06/05/2004 06:49:41

Pour ceux qui seraient encore perdus pour l'installation sous Windows avec VC++6. Voici la procédure à suivre.
Télécharger mySQL provenant de http://www.mysql.com et installer-le.
Ensuite dans votre projet VC++, allez dans Tools-&gt;Options-&gt;Directories
À cet endroit :
Platform: Win32
Show directories for: Include files
Insérez le répertoire dans la liste dessous (normalement C:/mysql/include)
Ensuite, vous faites la même chose pour Library Files en sélectionnant dans le select box "Show directories for:" et inscrivez le path en dessous (normalement C:/mysql/lib/debug). Appuyez sur OK
Ensuite il faut ajouter la librairie à votre projet. Allez dans Project-&gt;Settings-&gt;Link
Category : General
Dans Object/library modules, ajoutez libmysql.lib (au début tiens c'est plus facile à retrouver vu que c'est ajouté manuellement :)

Pour terminer, prenez le fichier libmySQL.dll qui se trouve dans C:/mysql/lib/debug et copier le dans le dossier C:/Windows/System32

Executer le programme, sautez dans les airs et criez hourra si ca marche !
Si vous avez d'autres questions n'hésitez pas !

Commentaire de GRenard le 06/05/2004 06:58:36

Oh et pour ceux à qui ca bugguerait encore, il faut utiliser les entetes suivantes au lieu de celles spéficiées dans ce programme.
(si vous utilisez les configurations que j'ai mentionnées dans le message précédent)

#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;winsock.h&gt;
#include &lt;mysql.h&gt;

C'est le winsock.h qui enleve les erreurs que des fonctions n'existent pas.
À partir de là, il se peut que vous ayiez des Warnings car le code vérifie dans le for un unsigned int avec un int (donc changer int i par unsigned int i).
Pour finir, le logiciel vous dit qu'il manque un return pour le main, il suffit de marquer juste apres la ligne mysql_close(conn); la ligne return 0;

Pour une bonne technique de programmation, les autres return 0; devraient être remplacés par des return 1; ce qui signifie qu'une erreur a été trouvée.

Commentaire de sy_prog le 21/05/2004 22:16:24

La demarche que tu as donné sur la configuration de c++ pour la connexion à mysql m'a beaucoup aidé.

Maintenant je travaille sur l'ouverture et la lecture des fichiers DICOM en c++, est-ce que quelqu'un pourra m'aider ??

Merci.

Commentaire de Oatly le 14/10/2004 21:29:58

Salut
J'utilise Devcpp et j'ai un probleme lors de la compilation du apparemment au fichier mysql_com.h :
4 C:\Program Files\Dev-Cpp\include\mysql\mysql.h:57,               from main1.cpp In file included from C:/Program Files/Dev-Cpp/include/mysql/mysql.h:57,               from main1.cpp
116 C:\Program Files\Dev-Cpp\include\mysql\mysql_com.h 'SOCKET' is used  as a type, but is not defined as a type.
180 C:\Program Files\Dev-Cpp\include\mysql\mysql_com.h `SOCKET' was not  declared in this scope
180 C:\Program Files\Dev-Cpp\include\mysql\mysql_com.h syntax error  before `,' token

Commentaire de jsonor le 16/10/2004 19:46:47

salut,
je ne vois pas trop ce que c'est...c peut être dû au package que tu as pris sur mysql.com...il fo bien prendre celui pour windows dans ton cas...apparemment, c celui pour linux que tu as car il me semble pas de mémoire que sous windows est défini le type SOCKET....enfin ca fé un moment que je ne m'y suis pas replongé, mais c peut etre une piste

Commentaire de Oatly le 16/10/2004 20:22:48

Salut
En cherchant j'ai fini par trouver un pack pour devcpp (tout simplement dans outils>nouvelles versions/packages , pour ceux qui auraient le meme probleme que moi). Merci tout de meme pour ta reponse.

Commentaire de AnTiXed le 27/11/2004 14:02:19

Merci pour ton code, il va beaucoup m'aider, je me demandais juste, si je pouvais envoyer n'importe quelle requéte SQL. En changeant simplement cette ligne :

if (mysql_query(conn,"SELECT * FROM nom_table"))


Merci d'avance.

Commentaire de jsonor le 27/11/2004 16:08:55

Oui, tu peux mettre n'importe quelle requête standards (SELECT, UPDATE, DELETE)...enfin à condition que les droits soient donnés à l'utilisateur en question...pour ce qui est des autres requêtes un peu spéciale (GRANT..), il faudrait relire la doc, mais je pense que c'est possible aussi, toujours en fonction des droits donnés.
Pour être sûr tu peux aller sur le site de Mysql ;) (www.mysql.com)

Commentaire de AnTiXed le 28/11/2004 10:26:59

Oki merci j'ai vérifié on peut effectivement faire à peu prés tout (DROP, INSERT INTO compris =) )

Commentaire de web2004 le 08/02/2005 19:19:37

Oatly, comment t'as fais pour résoudre ton problème. J'ai les mêmes erreurs que toi, et pourtant j'ai installé le  MYSQL devpack en allant sur outils>nouvelles versions/packages .
Mais j'ai toujours ce problème.

Merci d'avance
web

Commentaire de rob85 le 15/02/2005 01:38:48

Franchement, y pas à dire, vous etes des boss !!!

Merci pour votre aides !!

@+ Rob.

Commentaire de Oatly le 15/02/2005 17:19:54

Heu web2004 je sais pas quoi te repondre, moi l'erreur venait de la, si ca marche pas ben verifie les links de librairies , etc...

Commentaire de web2004 le 16/02/2005 16:54:26

Ok merci quand meme de m'avoir repondu.

Web2004

Commentaire de fabsvy le 24/03/2005 15:23:32

slt j'aimerai pouvoir faire la meme chose qu'avec ton prgm mais cette foix si avec une base de donnée sql serveur 2000 tu saurai pas par hassard comment jpourrais faire?
merci d'avance

Commentaire de nico_fip1 le 03/10/2005 14:45:28

Salut à tous,
Ma question est à peu de choses près la même que celle de FABSVY...

Je dois développer une application Client de base de données, mais pour le moment, le serveur n'a pas encore été défini.

Existe-t-il le même système pour les autres bases ?

Pour le moment, je fais mes premiers essais avec ce code.

Quelqu'un connais le système des ODBC ? J'ai encore un peu de mal... Je débute en SGBD.

Merci n'avance

Commentaire de steaf le 20/10/2005 16:04:08


Salut,

Comme Oatly, j'utilise "dev cpp" comme IDE et j'ai dernièrement installé une base "mysql".
Elle fonctionne trés bien sur mon pc, par contre, il m'est impossible d'effectuer une connection avec "mysql_real_connect(conn,"localhost","root","password",NULL,MYSQL_PORT,NULL,0)" avec la librairie importer avec "outils>nouvelles versions/packages"

J'y accède trés bien en direct depuis une fenetre MS-DOS ou depuis un driver JDBC avec eclipse.

Pourriez vous me dire si la librairie que l'on telecharge avec
outils>nouvelles versions/packages fonctionne ?

Et pour web2004, j'ai résolu le pb des "Sockets" en inserant en début du fichiers : include <windows.h>

Commentaire de man_smi le 02/01/2007 16:14:09

salut
je vous remercie pour vos explications que vous avez donné ainsi que le details du programme

mais mon probleme est que g execute le programme il m'a donné l'erreur suivant:
File 'c:\mysql\\share\charse
Character set '#33' is not a
'c:\mysql\\share\charsets\In
Erreur de connexion !!!!
Press any key to continue

j'attends votre aide avec passion

et merci infiniment

Commentaire de azza_khalid le 26/02/2007 11:15:02

salut
   j'ai le même pb que DevelMan : l'affichage des erreurs sur mysql_real_connect, mysql_connect...
j'ai tester gcc -o azza.cpp -lmysqlclient et aussi gcc -o azza.cpp -lmysql mais ca marche pas, ds le deuxième cas le fichier azza.cpp disparu.
aussi j'ai pas compris servuer.exe c'est quoi ds votre code
merci j'attends votre aide avec passion.

Commentaire de electronium le 01/03/2007 04:21:49

slt tout le monde;
savez-vous ou je peut trouvé le package mysql pour dev-c++

Commentaire de banovic le 28/03/2007 16:52:52

Pouvez-vous svp me donner le liens pour avoir la librairie mysql pour l'utilisation sous borland.

Commentaire de oliverman le 29/03/2007 01:01:20

Wouah, 4 ans aprés le post de cette source, elle est toujours sollicitée!!!
Enfin normal étant donnée la clarté.

http://www.mysql.com/
Rubrique: Products -> MySQL Drivers -> C API for MySQL -> Download

je pense que c'est "MySQL Connector/Net".
Enfin bon, si c'est pas ca, c'est plus trés loin.

Commentaire de banovic le 29/03/2007 18:16:21

MON SOUCI MAJEUR EST QUE JE ME SERS D'1 DK40 JE DOIS CREER UNE APPLICATION QUI RECOIT DES DONNEES GPS ET QUI LES STOCKS DANS UNE BDD ET JE DOIS CREER AUSSI UN SERVEUR WEB DANS LE DK40 DE CHEZ BECKQUI FERA UNE REQUETE AVEC MON POSTE DE TRAVAIL LA OU EST STOCKé MA BDD POUR PRENDRE LES VALEURS GPS. SI QQ UN A DES TUYAUX, JE LES PRENDS.LA, J'AI CREER MES PAGE WEB ET J'AI REUSSI A LES STOCKER DANS LE DK40,LE PROBLEME EST QUE J'AI ANTERIEUREMENT FLASHé LE BIOS DU DK40 DONC IL N'Y A PLUS DE SERVEUR WEB(HTTPD).IL FAUDRAIS QUE QQ 1 M'AIDE A LE TROUVER ET PK PAS UN PROGRAMME POUR QUI TRAITE LE CGI.
SI YEN A 1 QUI CONNAIT LE DK40, QU'IL ME LE SIGNAL, CA SERAIT COOL.
MERCI A TOUS.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

database [ par logant83 ] Bonjour, voila la je code un service en C et les données enregistré se stock dans ma base MySQL, mais voila le probléme c'est que j'aimerai que la tab connection serveur MySQL [ par desti44 ] salut &#224; tous, donc mon probl&#232;me est que je dois pour la semaine prochaine, un programme sous "qt" qui me permet de me connecter &#224; une b connexion à une base mysql sous linux [ par progrima ] bonsoir!!je vouderais r&#233;aliser un programme qui : lit des donn&#233;es d'une base access install&#233;e sous windows 2003 server et par la suite base de données mysql en C, avec structure générique [ par kazoumoulox ] Bonjour, je suis &#233;tudiant en stage, et je dois concevoir un logiciel qui parse des fichiers et ins&#232;re les donn&#233;es dans une base de donn Base de données vide ? [ par tigerskin ] Bonjour !Je souhaite v&#233;rifier si une base de donn&#233;es est vide (si aucun champ n'est rentr&#233;) mais je n'arrive pas &#224; trouver la bonn se connecter à une base de données [ par kgadhi ] Bonjour tout le monde,J'aimerais me connecter à une base de données à une base de données mysql, mais je ne sais pas comment faire:- J'ai telecharger Interrogation d'une base MySQL [ par Taurnil ] Bonjour à tous, bah voilà, c'est encore moi, le même projet (voir ce topic), la même fenêtre (qui fonctionne nickel besoin de vos aides [ par boualiasma ] Salut,- J'ai décidé de travailler avec easyphp puisque plus facile à créer des bases des données par rapport à Mysql server 5.0 qui fait ceci par lign gestion d'une base de données MySQL en C [ par titeuf21121 ] Salut tout le monde,alors, v'là mon problème:Je souhaite gérer une base de données MySQl avec un programme en C.J'utilise la librairie libmysql.J'arri Probleme API MySQL [ par flatou ] Salut a tousdepuis qq jours j'essaye de programmer une petite application qui permettrait de gerer une base de donnée MySQL avec l'api mysql et visual


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 4,368 sec (3)

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