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

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Attaquer Base MySQL en C#

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Attaquer Base MySQL en C#

n°1452423
Agmoh
¯\_(ツ)_/¯
Posté le 04-10-2006 à 20:17:48  profilanswer
 

Bonjour...
 
Je souhaite realiser un programme qui me permet d'acceder, et modifier des infos d'un base de donnée MySQL...
En gros un logiciel pour gerer des commandes, des infos client etc...
Est ce réalisable, est dans quel niveau de difficulté car je voudrai faire ca en C# mode graphique (Appli windows) ?  
 
toute aide et explication sera la bienvenue :)


Message édité par Agmoh le 07-10-2006 à 18:59:36
mood
Publicité
Posté le 04-10-2006 à 20:17:48  profilanswer
 

n°1452437
arnaudm57
Posté le 04-10-2006 à 20:58:52  profilanswer
 

Salut à toi,
 
Voilà un lien que tu seras certainement utile, perso, c'est la dll que j'utilise pour les connexions MySQL.
 
http://dotnet.developpez.com/faq/a [...] viadrivers
 
Ce n'est pas plus compliqué que d'utiliser SQL Express 2005 ... le seul problème que j'ai rencontré, a été qu'étant donné que j'ai un hébergement mutualisé chez OVH ... pas possible d'accéder à la base de données directement pour une Application Windows (et non web, je précise)
 

n°1452829
Berceker U​nited
PSN : berceker_united
Posté le 05-10-2006 à 15:03:36  profilanswer
 

Je confirme. J'ai testé en regardant le tuto present dans le site indiqué.
Si tu utilises VS C ou autre il faut rajouter la référence dans la partie référence dans ton projet "MySQLDriverCS"


Message édité par Berceker United le 05-10-2006 à 15:17:45
n°1453091
Agmoh
¯\_(ツ)_/¯
Posté le 05-10-2006 à 20:50:57  profilanswer
 

Merci d'avoir répondu :)
j'ai vu aussi les driver MySql connector edité par mysql...
j'vais prendre ceux la car ceux que vous m'avez cité j'ai pas trop compris leur fonctionnement ...


Message édité par Agmoh le 05-10-2006 à 20:52:24
n°1453339
Agmoh
¯\_(ツ)_/¯
Posté le 06-10-2006 à 13:14:09  profilanswer
 

Bon et bien j'ai un petit souci...
 
Je veux faire un formulaire windows dans lequel : J'ai une combobox dont les valeures sont puisé dans une table rayon.codeR afin que chaque produit ne puissent etre inséré dans un rayon inconnu.
 
Voici ce que j'ai essayé :  
 

Code :
  1. using System;
  2. using System.Drawing;
  3. using System.Collections;
  4. using System.ComponentModel;
  5. using System.Windows.Forms;
  6. using System.Data;
  7. using MySql.Data.MySqlClient;
  8. namespace WindowsApplication1
  9. {
  10. /// <summary>
  11. /// Description résumée de frmaddpdt.
  12. /// </summary>
  13. public class frmaddpdt : System.Windows.Forms.Form
  14. {
  15.  private System.Windows.Forms.Label label1;
  16.  private System.Windows.Forms.Label label2;
  17.  private System.Windows.Forms.Label label3;
  18.  private System.Windows.Forms.Label label4;
  19.  private System.Windows.Forms.Label label5;
  20.  private System.Windows.Forms.Label label6;
  21.  private System.Windows.Forms.TextBox reference;
  22.  private System.Windows.Forms.TextBox nom;
  23.  private System.Windows.Forms.RichTextBox desc;
  24.  private System.Windows.Forms.TextBox prix;
  25.  private System.Windows.Forms.TextBox stock;
  26.  private System.Windows.Forms.Button ajouterpro;
  27.  private System.Windows.Forms.ComboBox comboBox1;
  28.  private MySqlConnection Connection = new MySqlConnection();
  29.  private MySqlDataAdapter MyAdapter = new MySqlDataAdapter();
  30.  private MySqlDataReader rdr = new MySqlDataReader();
  31. [...]
  32. private void frmaddpdt_Load(object sender, System.EventArgs e)
  33.  {
  34.   string ConnnectionStr = String.Empty;
  35.   ConnnectionStr = "Database=dbtest;Data Source=localhost;User Id=roottest;Password=test";
  36.   Connection.ConnectionString = ConnnectionStr;
  37.   string MySQLCmd = "SELECT coder FROM rayon";
  38.   Connection.Open();
  39.   MyAdapter.SelectCommand = new MySqlCommand(MySQLCmd, Connection);
  40.   rdr=MyAdapter.SelectCommand.ExecuteReader();
  41.   if(rdr!=null)
  42.   {
  43.    while (rdr.Read())
  44.    {
  45.     string s=rdr["coder"];
  46.     comboBox1.Items.Add(s);
  47.    }
  48.   }
  49.  }


 
 il me repond a ca :
 
"\WindowsApplication1\frmaddpdt.cs(32): Aucune surcharge pour la méthode 'MySqlDataReader' ne prend d'arguments '0'"
sur   private MySqlDataReader rdr = new MySqlDataReader();
 
"\WindowsApplication1\frmaddpdt.cs(241): Impossible de convertir implicitement le type 'object' en 'string' "sur string s=rdr["coder"];
 
 
Comment faire ?
 
 

n°1453368
Berceker U​nited
PSN : berceker_united
Posté le 06-10-2006 à 13:57:40  profilanswer
 

SqlCommand oCommand = new SqlCommand(ta_requete,ta_connexion);
SqlDataReader xxx = oCommand.ExecuteReader();
Ouppss ça c'est pour SQlServer mais je crois que ça ne change pas grand chose.


Message édité par Berceker United le 06-10-2006 à 13:58:43
n°1453390
MagicBuzz
Posté le 06-10-2006 à 14:22:35  profilanswer
 

string s = (string)rdr["coder"];

n°1453856
Agmoh
¯\_(ツ)_/¯
Posté le 07-10-2006 à 19:02:36  profilanswer
 

j'ai ajouté .tostring() et c'est ok !
Par contre petite question :
 
Mon appli posséde une dizaine de formulaire windows.
Ajouter produit,
Supprimer produit,
Etat client,
ajouter rayon etc...
 
Est ce que je dois connecter mon appli a MySQL au lancement de l'appli ou juste lorsque j'en ai besoin ? (car la je met la connexion a mysql lorsque l'on clique sur le bouton rechercher du formulaire en question et parfois c'est long pour la requete alors que ma table a 10 lignes...)
 
Sinon, Si je met ma base de données chez un hebergeur, est il vrai que mon appli ne pourra s'y connecter pour une question de securité ?  
EDIT :C'est juste a titre informatif, car cette appli est uniquement destiné a mes etudes... et non a une utilisation pro...
 
Merci !


Message édité par Agmoh le 07-10-2006 à 19:03:34
n°1453901
arnaudm57
Posté le 07-10-2006 à 23:28:12  profilanswer
 

Perso, j'ouvre et je ferme la connexion dès que j'en ai besoin ... enfin bon j'utilise principalement SQL Server 2005 Express ...  
 
Et sinon pour te connecter à une base de données chez l'hebergeur, tout dépend si cet hébergeur a effectivement le port MySQL ouvert (3306 il me semble), et puis si tu as une adresse à laquelle te connecter à ce serveur. En l'occurence, comme je le disais quelques posts plus haut, je dispose d'un hébergement mutualisé chez OVH et il m'est impossible de me connecter à ma base de données MySQL.
 

n°1453907
Berceker U​nited
PSN : berceker_united
Posté le 08-10-2006 à 01:46:27  profilanswer
 

Mysql ou SQLServer le problème reste le même. La connexion n'a pas besoin d'être ouvert en permanence. C'est une question des stratégies, Il faut gérer l'ouverture et fermeture selon les cas. Exemple une fonction qui appelle divers petites fonctions qui isolé vont chercher des info dans la base. Chaque fonction se connecte à la base de données. Le problème, c'est le faite d'appeller la fonction principale va provoquer une succession d'ouverture fermeture dans le processus d'execution alors qu'une ouverture et une fermeture unique est plus judicieux.

mood
Publicité
Posté le 08-10-2006 à 01:46:27  profilanswer
 

n°1455160
MagicBuzz
Posté le 11-10-2006 à 01:20:33  profilanswer
 

A la base, la plupart des SGBD supportent sans problème plusieurs centaines de connexions concurrentes sans broncher.
 
Moi je suis donc plutôt de l'avis d'établir la connection au démarrage de l'appli, et de la fermer proprement quand on quitte.
 
L'avantage principal, c'est que ça permet de faire des transactions persistantes qui sont actives sur plusieurs forms à la suite (wizzard par exemple). En revanche, les risques de lock liés à cette utilisation sont plus grand : t'es en modif sur une ligne, tu vas boire un café => personne ne peut accéder à la ligne tant que t'es pas revenu...

n°1455161
MagicBuzz
Posté le 11-10-2006 à 01:23:37  profilanswer
 

Un autre intérêt de la solution de garder la cnx ouverte, c'est de faire des curseurs dynamiques.
 
Genre t'as un datagrid dont les informations sont modifiables (et ça impacte directement la base à la moindre modification), ou mieux, un datagrid dont le contenu se met à jour automatiquement à chaque mise à jour dans la base par une tierce personne.
 
Ensuite, c'est à toi de voir si ce genre de fonctionnalités te sont utiles ou pas, puisqu'en effet, ouvrir une connection le matin à 9h et la fermer le soir à 19h, c'est charger le SGBD "pour rien", et risque de se retrouver avec des problèmes de "rollback segment fault" si tu ne gères pas proprement les exceptions et les fins de transactions.

n°1457445
Agmoh
¯\_(ツ)_/¯
Posté le 15-10-2006 à 11:43:26  profilanswer
 

Est ce que vous connaissez un hebergeur donc les tables peuvent etre de type INNO-DB et que le port MySQL est ouvert pour que mon logiciel en C# passe ?
merci !

n°1457515
Berceker U​nited
PSN : berceker_united
Posté le 15-10-2006 à 14:09:33  profilanswer
 

C'est très rare car les hebergeurs savent tous qu'il n'est vraiment pas prudent de faire ce genre de chose. C'est lui demander d'abaisser ça sécurité. Le seul moyen c'est d'avoir un serveur dédier.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Attaquer Base MySQL en C#

 

Sujets relatifs
Rrreur Requete Mysql Par PHPparcourir, Stocker image ds bd mysql et l'afficher !!
[PHP/Mysql] Problème avec 2 connexions simultanées[MySQL]UTF8 vs ISO-..
comment retirer sa base de donnée mysql[mysql] pourquoi excel n'arrive pas a se connecter a mysql?
Pb Mysql 
Plus de sujets relatifs à : Attaquer Base MySQL en C#


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