Attaquer Base MySQL en C# - C#/.NET managed - Programmation
Marsh Posté le 04-10-2006 à 20:58:52
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)
Marsh Posté le 05-10-2006 à 15:03:36
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"
Marsh Posté le 05-10-2006 à 20:50:57
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 ...
Marsh Posté le 06-10-2006 à 13:14:09
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 :
|
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 ?
Marsh Posté le 06-10-2006 à 13:57:40
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.
Marsh Posté le 07-10-2006 à 19:02:36
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 !
Marsh Posté le 07-10-2006 à 23:28:12
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.
Marsh Posté le 08-10-2006 à 01:46:27
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.
Marsh Posté le 11-10-2006 à 01:20:33
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...
Marsh Posté le 11-10-2006 à 01:23:37
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.
Marsh Posté le 15-10-2006 à 11:43:26
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 !
Marsh Posté le 15-10-2006 à 14:09:33
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.
Marsh Posté le 04-10-2006 à 20:17:48
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