Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
884 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  VC++ Express 2008 et MySQL++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

VC++ Express 2008 et MySQL++

n°1840269
Pizz
Vive les Tomates !
Posté le 20-01-2009 à 01:32:16  profilanswer
 

Hello !
 
Je viens de me remettre à la programmation C++ et j'ai pas mal oublié  :(
 
Je veux créer un simple bouton dans une form qui teste si la connexion à un serveur mysql fonctionne.
 
Si quelqu'un a ça sous la main pour que je puisse déjà avoir une bonne base avant d'essayer d'aller plus loin ...
 
J'utilise VC++ Express 2008 avec MySQL++ et les vagues souvenirs que j'ai sont en Borland C++.
 
Merci !  :jap:


Message édité par Pizz le 24-01-2009 à 01:57:55

---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !
mood
Publicité
Posté le 20-01-2009 à 01:32:16  profilanswer
 

n°1840288
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 20-01-2009 à 09:07:20  profilanswer
 

Ca dépend l'API que tu utilises : MFC, Winforms ou WPF ?


---------------
J'ai un string dans l'array (Paris Hilton)
n°1840926
Pizz
Vive les Tomates !
Posté le 21-01-2009 à 00:06:54  profilanswer
 

Winforms
 
Voici le bout de code que j'ai fait pour tester ma connexion mysql :
 

Code :
  1. #include "windows.h"
  2. #include "iostream"
  3. #include "mysql.h"
  4. using namespace std;
  5. #pragma comment(lib, "libmysql.lib" )
  6. int main(void)
  7. {
  8. MYSQL mysql;
  9. mysql_init(&mysql);
  10. if (!mysql_real_connect(&mysql,"localhost","root","","stock",0,NULL,0))
  11. {
  12.  cout << "Erreur \n\n";
  13.  system("pause" );
  14.  return(0);
  15. }
  16. cout << "Connexion ok \n\n";
  17. system("pause" );
  18. mysql_close(&mysql);
  19. return(0);
  20. }


 
ça fonctionne correctement mais je n'arrive pas à mettre ça en place en utilisant une form sur un bouton avec un textbox qui se modifie ...
 
 
merci pour votre aide  :jap:


Message édité par Pizz le 21-01-2009 à 00:56:48

---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !
n°1842382
Pizz
Vive les Tomates !
Posté le 24-01-2009 à 01:45:41  profilanswer
 

je galère ...
 
mon fichier cpp :
 

Code :
  1. // mysql.cpp : fichier projet principal.
  2. #include "stdafx.h"
  3. #include "Form1.h"
  4. #include "windows.h"
  5. #include "iostream"
  6. #include "mysql.h"
  7. using namespace mysql;
  8. #pragma comment(lib, "libmysql.lib" )
  9. [STAThreadAttribute]
  10. int main(array<System::String ^> ^args)
  11. {
  12. // Activation des effets visuels de Windows XP avant la création de tout contrôle
  13. Application::EnableVisualStyles();
  14. Application::SetCompatibleTextRenderingDefault(false);
  15. // Créer la fenêtre principale et l'exécuter
  16. Application::Run(gcnew Form1());
  17. return 0;
  18. }


 
mon fichier form1.h :
 

Code :
  1. #pragma once
  2. namespace mysql {
  3. using namespace System;
  4. using namespace System::ComponentModel;
  5. using namespace System::Collections;
  6. using namespace System::Windows::Forms;
  7. using namespace System::Data;
  8. using namespace System::Drawing;
  9. /// <summary>
  10. /// Description résumée de Form1
  11. ///
  12. /// AVERTISSEMENT : si vous modifiez le nom de cette classe, vous devrez modifier la
  13. ///          propriété 'Nom du fichier de ressources' de l'outil de compilation de ressource managée
  14. ///          pour tous les fichiers .resx dont dépend cette classe. Dans le cas contraire,
  15. ///          les concepteurs ne pourront pas interagir correctement avec les ressources
  16. ///          localisées associées à ce formulaire.
  17. /// </summary>
  18. public ref class Form1 : public System::Windows::Forms::Form
  19. {
  20. public:
  21.  Form1(void)
  22.  {
  23.   InitializeComponent();
  24.   //
  25.   //TODO : ajoutez ici le code du constructeur
  26.   //
  27.  }
  28. protected:
  29.  /// <summary>
  30.  /// Nettoyage des ressources utilisées.
  31.  /// </summary>
  32.  ~Form1()
  33.  {
  34.   if (components)
  35.   {
  36.    delete components;
  37.   }
  38.  }
  39. private: System::Windows::Forms::Button^  button1;
  40. protected:
  41. private: System::Windows::Forms::TextBox^  textBox1;
  42. protected:
  43. protected:
  44. protected:
  45. protected:
  46. private:
  47.  /// <summary>
  48.  /// Variable nécessaire au concepteur.
  49.  /// </summary>
  50.  System::ComponentModel::Container ^components;
  51. #pragma region Windows Form Designer generated code
  52.  /// <summary>
  53.  /// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
  54.  /// le contenu de cette méthode avec l'éditeur de code.
  55.  /// </summary>
  56.  void InitializeComponent(void)
  57.  {
  58.   this->button1 = (gcnew System::Windows::Forms::Button());
  59.   this->textBox1 = (gcnew System::Windows::Forms::TextBox());
  60.   this->SuspendLayout();
  61.   //  
  62.   // button1
  63.   //  
  64.   this->button1->Location = System::Drawing::Point(91, 62);
  65.   this->button1->Name = L"button1";
  66.   this->button1->Size = System::Drawing::Size(97, 29);
  67.   this->button1->TabIndex = 0;
  68.   this->button1->Text = L"Connect to Mysql";
  69.   this->button1->UseVisualStyleBackColor = true;
  70.   this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
  71.   //  
  72.   // textBox1
  73.   //  
  74.   this->textBox1->Location = System::Drawing::Point(92, 126);
  75.   this->textBox1->Name = L"textBox1";
  76.   this->textBox1->Size = System::Drawing::Size(96, 20);
  77.   this->textBox1->TabIndex = 1;
  78.   this->textBox1->Text = L"No";
  79.   this->textBox1->TextAlign = System::Windows::Forms::HorizontalAlignment::Center;
  80.   //  
  81.   // Form1
  82.   //  
  83.   this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
  84.   this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
  85.   this->ClientSize = System::Drawing::Size(292, 273);
  86.   this->Controls->Add(this->textBox1);
  87.   this->Controls->Add(this->button1);
  88.   this->MaximizeBox = false;
  89.   this->MinimizeBox = false;
  90.   this->Name = L"Form1";
  91.   this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen;
  92.   this->Text = L"MYSQL";
  93.   this->ResumeLayout(false);
  94.   this->PerformLayout();
  95.  }
  96. private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
  97.    }
  98. };
  99. }


 
Je n'arrive à mettre le programme de test de connexion sur le clic du bouton ...
 
Merci !


Message édité par Pizz le 24-01-2009 à 01:47:21

---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !
n°1842384
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-01-2009 à 02:26:30  profilanswer
 

ligne 82 : tu ajoutes un handler à l'évenement Click de ton bouton qui va appeler la fonction button1_Click
ligne 109 : cette fonction est vide.... pourtant c'est elle qui doit contenir le test de connexion !
 
je te suggère de lire un tuto sur Winforms, tu n'as manifestement pas compris le fonctionnement
http://nico-pyright.developpez.com [...] /winforms/


---------------
J'ai un string dans l'array (Paris Hilton)
n°1842417
Pizz
Vive les Tomates !
Posté le 24-01-2009 à 11:57:04  profilanswer
 

je sais qu'à la ligne 109 il n'y a rien, mais c'est justement pour savoir ce que je dois mettre.
 
sinon en toute logique pour moi (qui ne doit pas être logique vu que ça ne fonctionne pas) à la ligne 109 :
 

Code :
  1. private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
  2.  {
  3.  MYSQL *mysql;
  4.  mysql_init(&mysql);
  5.  if (!mysql_real_connect(&mysql,"localhost","root","","test",0,NULL,0))
  6.   {
  7.    textBox1->Text="Yes";
  8.   }
  9.  else
  10.   {
  11.    textBox1->Text="Bouh";
  12.   }
  13.  mysql_close(&mysql);
  14.  }


 
mais il me met que MYSQL, mysql, mysql_init, ... ne sont pas déclarés ou introuvables ...
 
merci pour le lien, je l'avais déjà survolé, mais je vais le lire correctement cette fois.


Message édité par Pizz le 24-01-2009 à 11:59:51

---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !
n°1842435
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-01-2009 à 12:51:11  profilanswer
 

Ligne 4 : tu transmets l'adresse de ton pointeur en argument de mysql_init() au lieu du pointeur en lui même. Voici ce qu'il faut faire :

 
Code :
  1. MYSQL *mysql;
  2. mysql_init(mysql);


Un petit rappel sur les pointeurs : http://mapage.noos.fr/emdel/notes.htm#pointeurs

 

Tu devrais aussi tester la valeur de retour de mysql_init(), qui renvoie NULL si la fonction n'a pas réussi à allouer suffisamment de RAM pour ton objet MYSQL
Ceci dit, comme tu codes en C++, tu ferais mieux d'utiliser un wrapper C++ de MySQL (MySql++ par exemple), au lieu de mélanger du C et du C++

 

edit: ma remarque sue le pointeur mysql est aussi valable pour la ligne 5 et l'argument de mysql_real_connect()


Message édité par Harkonnen le 24-01-2009 à 12:52:12

---------------
J'ai un string dans l'array (Paris Hilton)
n°1845391
Pizz
Vive les Tomates !
Posté le 30-01-2009 à 22:00:50  profilanswer
 

1>------ Début de la génération : Projet : mysql, Configuration : Debug Win32 ------
1>Compilation en cours...
1>mysql.cpp
1>Form1.h(111) : error C2065: 'MYSQL' : identificateur non déclaré
1>Form1.h(111) : error C2146: erreur de syntaxe : absence de ';' avant l'identificateur 'mysql'
1>Form1.h(111) : error C2882: 'mysql' : utilisation non conforme d'un identificateur d'espace de noms dans l'expression
1>Form1.h(112) : error C2882: 'mysql' : utilisation non conforme d'un identificateur d'espace de noms dans l'expression
1>Form1.h(112) : error C3861: 'mysql_init' : identificateur introuvable
1>Form1.h(113) : error C2882: 'mysql' : utilisation non conforme d'un identificateur d'espace de noms dans l'expression
1>Form1.h(113) : error C2065: 'NULL' : identificateur non déclaré
1>Form1.h(113) : error C3861: 'mysql_real_connect' : identificateur introuvable
1>Form1.h(121) : error C2882: 'mysql' : utilisation non conforme d'un identificateur d'espace de noms dans l'expression
1>Form1.h(121) : error C3861: 'mysql_close' : identificateur introuvable
1>mysql - 10 erreur(s), 0 avertissement(s)
========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========
 
 :cry:


---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !
n°1845399
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 30-01-2009 à 22:24:25  profilanswer
 

et le "#include mysql.h" dans le fichier Form1.h, il est ou ? :heink:


---------------
J'ai un string dans l'array (Paris Hilton)
n°1845400
Pizz
Vive les Tomates !
Posté le 30-01-2009 à 22:24:38  profilanswer
 

en mettant tout dans le fichier .h, ça a l'air de fonctionner ...
 
je pensais qu'il fallait mettre les include dans .cpp ...
 
je vais y arriver  :o
 
edit : j'ai remarqué ça aussi avant que tu le dises, tu as dû le penser tellement fort que je l'ai entendu  :o


Message édité par Pizz le 30-01-2009 à 22:25:42

---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !
mood
Publicité
Posté le 30-01-2009 à 22:24:38  profilanswer
 

n°1845414
Pizz
Vive les Tomates !
Posté le 30-01-2009 à 22:52:59  profilanswer
 

ça marche !
 
merci  :jap:


---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !
n°1849986
Pizz
Vive les Tomates !
Posté le 11-02-2009 à 17:42:17  profilanswer
 

Maintenant que j'arrive à savoir si le serveur est en ligne ou pas, j'aimerai essayer d'afficher la valeur d'une requête dans un TextBox ... mais je n'arrive pas à convertir le résultat en texte ...
 
Si quelqu'un peut encore m'aider ...


---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !
n°1850130
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 12-02-2009 à 00:00:17  profilanswer
 

Qu'appelles tu "la valeur d'une requête" ? Le résultat retourné par la requête ?


---------------
J'ai un string dans l'array (Paris Hilton)
n°1851073
Pizz
Vive les Tomates !
Posté le 13-02-2009 à 23:36:09  profilanswer
 

c'est le résultat de ma requête.
 

Code :
  1. if (!mysql_real_connect(mySQL,"localhost","root","","stock",0,NULL,0))
  2.     {
  3.     textBox1->Text="error";
  4.     }
  5. else
  6.     {
  7.     if (!mysql_query(mySQL,"SELECT * FROM fournisseurs WHERE id=2" ))
  8.         {
  9.         resultat=mysql_store_result(mySQL);
  10.         textBox2->Text=System::Convert::ToString(mysql_num_fields(resultat));
  11.         while (colonne=mysql_fetch_row(resultat))
  12.             {
  13.             textBox1->Text=System::Convert::ToString(colonne[1]);
  14.             }
  15.         mysql_free_result(resultat);
  16.         }
  17.     else
  18.         {
  19.         textBox1->Text="no result";
  20.         }
  21.     }
  22. mysql_close(mySQL);


 
Quand je lance le programme, il me met "True" dans le textBox1 au lieu de la valeur qui se trouve dans la base de données ....
 
Ce qui s'affiche dans le textBox2 est correct.
 
Merci pour votre aide !
 
 :jap:


Message édité par Pizz le 14-02-2009 à 03:09:25

---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !
n°1852487
Pizz
Vive les Tomates !
Posté le 18-02-2009 à 11:04:42  profilanswer
 

:(


Message édité par Pizz le 18-02-2009 à 11:04:51

---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  VC++ Express 2008 et MySQL++

 

Sujets relatifs
Patterm matching sur MySQLReplication MySql
[mySQL] Grant insert & Temporary table[MYSQL] Aide pour une requête
[c#: windowsForm, MySql]Insertion d'une ligne dans un tableVlinks - Nouveau script annuaire (PHP/Mysql)
Copie BD Mysql importantes[PHP/MySQL] Submit Score
[Mysql][PDO] Comment faire un SELECT sur 2 bases ?MySQL - Probleme pour supprimer un champ sur Grosse DB
Plus de sujets relatifs à : VC++ Express 2008 et MySQL++


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR