[vc++ 6][api] connecteur a une base mysql

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 / Exemple :


#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 => 127.0.0.1
User => root
Pass => "" //rien

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.