begin process at 2012 05 27 21:16:13
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseaux & Internet

 > [VC++ 6][API] CONNECTEUR A UNE BASE MYSQL

[VC++ 6][API] CONNECTEUR A UNE BASE MYSQL


 Information sur la source

Note :
8 / 10 - par 3 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseaux & Internet Niveau :Expert Date de création :03/07/2002 Date de mise à jour :03/07/2002 18:45:56 Vu / téléchargé :8 975 / 945

Auteur : Xs

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

 Description

voila, ce code vous montre comment cous connecter et inserer quelque-chose dans une base de données MySQL.

Attention : ce code suppose, pour la compilation, que vous ayez téléchargé la librairie MySQL++ et que vous l'ayez bien installée :

MySQL++ : installations :
---------------------------------

*.h       =>    repertoire "include" de VC++
*.lib     =>    repertoir "Lib" de VC++
*.dll     =>    repertoir de l'executable ou de Windows\System

Source

  • #include <windows.h>
  • #include <commctrl.h>
  • #include <stdlib.h>
  • #include <string.h>
  • #include <malloc.h>
  • #include <sys/stat.h>
  • #include <mysql++>
  • #include <sqlplus.hh>
  • #include "resource.h"
  • using namespace std;
  • char pass[255];
  • class Memoire
  • {
  • public:
  • char *chp1;
  • char *chp2;
  • char *user;
  • char *host;
  • char buffer[1024];
  • char* GetThenAllocate(HWND hWnd, int hControl, char *vName);
  • //FreeAllocatedOne(char *vName);
  • };
  • char* Memoire::GetThenAllocate(HWND hWnd, int hControl, char *vName)
  • {
  • GetDlgItemText(hWnd,hControl,buffer,sizeof(buffer));
  • if (strcmp(vName,"host")==0 || strcmp(vName,"Host")==0 )
  • {
  • host = (char*)malloc(strlen(buffer)+1);
  • strcpy(host,buffer);
  • return host;
  • }
  • else if (strcmp(vName,"user")==0 || strcmp(vName,"User")==0 )
  • {
  • user = (char*)malloc(strlen(buffer)+1);
  • strcpy(user,buffer);
  • return user;
  • }
  • else if (strcmp(vName,"Champs1")==0 || strcmp(vName,"Body")==0 )
  • {
  • chp1 = (char*)malloc(strlen(buffer)+1);
  • strcpy(chp1,buffer);
  • return chp1;
  • }
  • else if (strcmp(vName,"Champs2")==0 || strcmp(vName,"Auteur")==0 )
  • {
  • chp2 = (char*)malloc(strlen(buffer)+1);
  • strcpy(chp2,buffer);
  • return chp2;
  • }
  • return 0;
  • }
  • Memoire Mem;
  • LRESULT CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
  • {
  • switch(msg)
  • {
  • case WM_CLOSE:
  • DestroyWindow(hDlg);
  • break;
  • case WM_DESTROY:
  • PostQuitMessage(0);
  • break;
  • case WM_COMMAND:
  • switch(HIWORD(wParam))
  • {
  • case BN_CLICKED:
  • switch(LOWORD(wParam))
  • {
  • case IDCANCEL:
  • DestroyWindow(hDlg);
  • break;
  • case IDC_SEND:
  • {
  • Mem.GetThenAllocate(hDlg,IDC_ADRESS,"host");
  • Mem.GetThenAllocate(hDlg,IDC_USER,"user");
  • Mem.GetThenAllocate(hDlg,IDC_CH1,"Champs1");
  • Mem.GetThenAllocate(hDlg,IDC_CH2,"Champs2");
  • GetDlgItemText(hDlg,IDC_PASS,pass,sizeof(pass));
  • /*
  • pour le pass, je suis obliger de faire comme ceci : si le pass est "", il y aurais une erreur
  • */
  • try
  • {
  • Connection con(use_exceptions);
  • try
  • {
  • con.real_connect("ESSAI",Mem.host,Mem.user,pass,3306,(int)0,60,NULL);
  • }
  • catch(...)
  • {
  • MessageBox(NULL,"Impossible de se connecter à la base de données","Erreur !",0+MB_ICONHAND);
  • }
  • Query query = con.query();
  • query <<"INSERT INTO mytable (Champs1,Champs2) VALUES ('"<<Mem.chp1<<"','"<<Mem.chp2<<"');";
  • Result res = query.store();
  • MessageBox(hDlg,"La modification de la table a bien été éffectuée !","Bravo !",0+MB_ICONINFORMATION);
  • }
  • catch(BadQuery er)
  • {
  • MessageBox(NULL,"Il y a une erreur de syntaxe !","Erreur !",0);
  • }
  • }
  • break;
  • }
  • break;
  • }
  • break;
  • default:
  • return FALSE;
  • }
  • return FALSE;
  • }
  • int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
  • LPSTR lpCmdLine, int nCmdShow)
  • {
  • HWND hdlg;
  • MSG Msg;
  • hdlg = CreateDialog(hInstance,MAKEINTRESOURCE(IDD_DIALOG1), NULL, (DLGPROC) DlgProc);
  • if(hdlg == NULL)
  • {
  • MessageBox(NULL, "Window Creation Failed!", "Error!",
  • MB_ICONEXCLAMATION | MB_OK);
  • return 0;
  • }
  • ShowWindow(hdlg, nCmdShow);
  • UpdateWindow(hdlg);
  • while(GetMessage(&Msg, NULL, 0, 0) > 0)
  • {
  • TranslateMessage(&Msg);
  • DispatchMessage(&Msg);
  • }
  • return Msg.wParam;
  • }
#include <windows.h>
#include <commctrl.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
#include <sys/stat.h> 
#include <mysql++> 
#include <sqlplus.hh> 

#include "resource.h"

using namespace std;

char pass[255];

class Memoire
{
public:
	char *chp1;
	char *chp2;
	char *user;
	char *host;	
	
	char buffer[1024];

	char* GetThenAllocate(HWND hWnd, int hControl, char *vName);
	//FreeAllocatedOne(char *vName);

};



char* Memoire::GetThenAllocate(HWND hWnd, int hControl, char *vName)
{
	GetDlgItemText(hWnd,hControl,buffer,sizeof(buffer));

	if (strcmp(vName,"host")==0  || strcmp(vName,"Host")==0 )
	{
	host = (char*)malloc(strlen(buffer)+1);
	strcpy(host,buffer);
	return host;
	}
	else if (strcmp(vName,"user")==0  || strcmp(vName,"User")==0 )
	{
	user = (char*)malloc(strlen(buffer)+1);
	strcpy(user,buffer);
	return user;
	}
	else if (strcmp(vName,"Champs1")==0  || strcmp(vName,"Body")==0 )
	{
	chp1 = (char*)malloc(strlen(buffer)+1);
	strcpy(chp1,buffer);
	return chp1;
	}
	else if (strcmp(vName,"Champs2")==0  || strcmp(vName,"Auteur")==0 )
	{
	chp2 = (char*)malloc(strlen(buffer)+1);
	strcpy(chp2,buffer);
	return chp2;
	}
	
return 0;
}

Memoire Mem;


LRESULT CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_CLOSE:
DestroyWindow(hDlg);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_COMMAND:
switch(HIWORD(wParam))
{
case BN_CLICKED:
switch(LOWORD(wParam))
{
case IDCANCEL:
DestroyWindow(hDlg);
break;
case IDC_SEND:
	{

Mem.GetThenAllocate(hDlg,IDC_ADRESS,"host");
Mem.GetThenAllocate(hDlg,IDC_USER,"user");
Mem.GetThenAllocate(hDlg,IDC_CH1,"Champs1");
Mem.GetThenAllocate(hDlg,IDC_CH2,"Champs2");

GetDlgItemText(hDlg,IDC_PASS,pass,sizeof(pass)); 
/*
pour le pass, je suis obliger de faire comme ceci : si le pass est "", il y aurais une erreur
*/

try
{
Connection con(use_exceptions); 

	try
	{
		con.real_connect("ESSAI",Mem.host,Mem.user,pass,3306,(int)0,60,NULL);
	}
	catch(...)
	{
		MessageBox(NULL,"Impossible de se connecter à la base de données","Erreur !",0+MB_ICONHAND);
	}
	Query query = con.query();

	query <<"INSERT INTO mytable (Champs1,Champs2) VALUES ('"<<Mem.chp1<<"','"<<Mem.chp2<<"');"; 
	Result res = query.store(); 

	MessageBox(hDlg,"La modification de la table a bien été éffectuée !","Bravo !",0+MB_ICONINFORMATION);
}
catch(BadQuery er)
{
MessageBox(NULL,"Il y a une erreur de syntaxe !","Erreur !",0);
}

}
break;
}
break;
}
break;
default:
return FALSE;
}
return FALSE;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
HWND hdlg;
MSG Msg;

hdlg = CreateDialog(hInstance,MAKEINTRESOURCE(IDD_DIALOG1), NULL, (DLGPROC) DlgProc);


if(hdlg == NULL)
{
MessageBox(NULL, "Window Creation Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}

ShowWindow(hdlg, nCmdShow);
UpdateWindow(hdlg);

while(GetMessage(&Msg, NULL, 0, 0) > 0)
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
} 

 Conclusion

ben, donnez une note et des commentaires

PS :

JE VOUS CONSEIL FORTEMENT D'INSTALLE EASYPHP (www.easyphp.org) AFIN DE POUVOIR SE SERVIR CORRECTEMENT LOCALEMENT DE L'EXAMPLE.

POUR UNE CONNECTION LOCAL :
----------------------------------------
adresse  =&gt; 127.0.0.1
User       =&gt; root
Pass       =&gt; ""     //rien

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • examples.dspTélécharger ce fichier [Réservé aux membres club]Voir ce fichier4 486 octets
  • examples.dswTélécharger ce fichier [Réservé aux membres club]Voir ce fichier539 octets
  • examples.ncbTélécharger ce fichier [Réservé aux membres club]66 560 octets
  • examples.optTélécharger ce fichier [Réservé aux membres club]51 712 octets
  • examples.plgTélécharger ce fichier [Réservé aux membres club]1 037 octets
  • exampleSQL.exeTélécharger ce fichier [Réservé aux membres club]49 152 octets
  • libmySQL.dllTélécharger ce fichier [Réservé aux membres club]217 088 octets
  • resource.hTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 054 octets
  • Script1.apsTélécharger ce fichier [Réservé aux membres club]32 844 octets
  • Script1.rcTélécharger ce fichier [Réservé aux membres club]Voir ce fichier2 878 octets
  • simple1.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 134 octets
  • simple1.cpp.bakTélécharger ce fichier [Réservé aux membres club]2 548 octets
  • util.hhTélécharger ce fichier [Réservé aux membres club]114 octets

Télécharger le zip


 Sources du même auteur

Source avec Zip PACKAGE MANAGER
Source avec Zip [API WIN32] CLASSE D'ACCÈS ET DE GESTION DU REGISTRE (RÉEL E...
Source avec Zip [DX 9.0] SCENES EN WINDOWED : SIMPLES ET MULTIPLES AVEC SWAP...
Source avec Zip Source avec une capture [DX 9.0] WATERBALL - JEU COMPLET EN DX9 (STYLE ARKANOÏD)
Source avec Zip [CBX] CALCULETTE DYNAMIQUE

 Sources de la même categorie

Source avec Zip Source avec une capture MINI SERVEUR HTTP [WINDOWS] par ganjarasta
Source avec Zip Source avec une capture CLIENT DE TEST MODBUS TCP par brunovan
Source avec Zip Source avec une capture SCANIP [ARP / ICMP] par ganjarasta
Source avec Zip Source avec une capture TRACEROUTE [WINPCAP] par ganjarasta
Source avec Zip SERVEUR MULTITHREAD [LINUX/WIN] par nipepsinicolas

Commentaires et avis

Commentaire de mmuller57 le 04/07/2002 00:14:41

Super ton code, juste une question, tu peux m'expliquer try et catch qui m'est inconnu ?

Commentaire de Xs le 04/07/2002 14:00:54

reponse dans le MP que je t'ai envoyé.

en revanche, si l'explication interresse quelqu'un d'autre, je peux "publier" la réponse

Commentaire de Mike le 06/07/2002 16:48:46

Ouais je bein que tu le "publie" si ça te derange pas trop ou envoie moi un mail. webmaster@moteurprog.com
@+ HAVE FUN enjoy
WWW.MOTEURPROG.COM

Commentaire de rabbiwan le 24/04/2003 14:26:00

salut
je voudrai savoir comment tu te débrouille avec les biblios car moi j'ai des blems. il me dit qu'il y a erreur sur les istream et ostream. je c pas pourkoi
mes biblios je l ai trouvé sur mysql.com ou les as tu prise toi?
je bosse sur vc++6 entreprise
merci @+

Commentaire de osaris le 13/05/2003 18:43:21

Super sympas ton code en revanche je souhaiterais aussi avoir une explication sur le try & catch :-) D'avance merci

Commentaire de BlackGoddess le 21/10/2003 17:05:59

qq1 arrive a utiliser mysql++ avec vc++7 ? si oui merci de m'expliquer comment il a fait :)

Commentaire de magic_Nono le 15/11/2004 17:12:40

try & catch permettent de récupérer les exceptions et erreurs levées

J'étudie cette lib et mettrai bientot un com + complet
++
Nono.

Commentaire de BlackGoddess le 15/11/2004 19:02:14

catch(BadQuery er)
{
MessageBox(NULL,"Il y a une erreur de syntaxe !","Erreur !",0);
}

=> tu crées une copie de l'objet de type BadQuery au catch, il est très vivement conseillé d'attraper ses exceptions par référence :

catch(BadQuery &er)

(en effet, imagine que tu veuilles attraper une std::exception par valeur, et que c'est un bad_alloc, tu as de fortes chances pour que la copie foire)

de plus, tu n'est pas obligé de nommer ta variable d'exception si tu ne l'utilises pas, ca permet d'alléger le champ lexical courant :

catch(BadQuery &)
{
MessageBox(NULL,"Il y a une erreur de syntaxe !","Erreur !",0);
}

Commentaire de magic_Nono le 16/11/2004 09:02:07

standard du catch:

#define TRAITE_EXCEPTION_B \
catch(BException& e)\
{\
BString plomp;\
plomp="Exception interne Bruno";\
plomp+=(BString)"\nerr "+(BString)e.which()+" :\n \t"; plomp+=e.what() ;\
plomp+="\n    FIN Exception interne";\
saveToErrorLog(plomp); /*puts(plomp);*/ \
BVisuel::alerte(plomp);\
}\
catch(exception e)\
{\
BString plomp="Exception C++ : "; plomp+=e.what();\
saveToErrorLog(plomp); /*puts(plomp);*/ \
BVisuel::alerte(plomp);\
}\
catch(...)\
{\
printf("\n\n\t\t");\
printf("Exception Inconnue \n\n");\
saveToErrorLog("    FIN Exception Inconnue");\
BVisuel::alerte("Exception Inconnue ");\
}

Commentaire de virus_turk le 08/05/2006 04:21:59

Moi j'ai une question.. Je veux recopier tout ce qui est écrit dans un champ Edit ou Memo, et insérer ça dans une BDD.. le truc c'est que j'utilise Borland C++ Builder..

Dans ton code, tu as la ligne suivante :
query <<"INSERT INTO mytable (Champs1,Champs2) VALUES ('"<<Mem.chp1<<"','"<<Mem.chp2<<"');";

...et en borland ça donne
!mysql_query(myBD, "INSERT INTO mytable (Champs1,Champs2) VALUES(******);");

Ma question est donc la suivante.. que dois-je mettre à la place des ****** ??

Merci d'avance

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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,374 sec (4)

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