begin process at 2012 02 11 17:22:05
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de données

 > CLASSE MYSQL

CLASSE MYSQL


 Information sur la source

Note :
Aucune note
Catégorie :Base de données Source .NET ( DotNet ) Classé sous :mysql Niveau :Initié Date de création :22/10/2006 Date de mise à jour :24/10/2006 18:01:47 Vu / téléchargé :13 899 / 978

Auteur : jeb5292

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

 Description

Cette classe permet d'utiliser beacoup plus simplement MySQL avec C#. MySQL n'étant pas une base de données native pour c#, j'ai donc décidé, en m'appuyant sur la dll MySql.data.dll (disponible sur le site de mysql) de recréer mes propres methodes telles que mysql_connect, mysql_query, mysql_num_rows,...

Je ferais une mini aide pour pouvoir se servir de vette classe.

Je vous rapelle egalement qu'il faut inclure dans votre projet la dll MySql.data.dll. Vous pouvez laisser des commentaires pour m'aider dans la réalisation d'une classe plus fiable, je rapelle au passage qu'il ne s'agit que d'une version beta donc pas à 100% fiable.

Je vous conseille de compiler ce code comme une dll et l'inclure dans votre projet (using MySQL;) vous pourrez également lu'tiliser dans vb.net.

Source

  • using System;
  • using System.Collections.Generic;
  • using System.Text;
  • using MySql.Data.MySqlClient;
  • namespace MySQL
  • {
  • public class SQL
  • {
  • public static bool mysql_connect(string string_connect)
  • {
  • try
  • {
  • ConnectionRessource = new MySqlConnection(string_connect);
  • ConnectionRessource.Open();
  • connected = true;
  • return true;
  • }
  • catch (Exception Ex)
  • {
  • lastEx = Ex.Message;
  • connected = false;
  • return false;
  • }
  • }
  • public static bool mysql_close()
  • {
  • if (connected)
  • {
  • try
  • {
  • ConnectionRessource.Close();
  • connected = false;
  • return true;
  • }
  • catch (Exception Ex)
  • {
  • lastEx = Ex.Message;
  • return false;
  • }
  • }
  • else
  • {
  • lastEx = "Aucune connexion n'a encore été ouverte.";
  • return false;
  • }
  • }
  • public static string[][] mysql_query(string query)
  • {
  • try
  • {
  • com = new MySqlCommand(query, ConnectionRessource);
  • dr = com.ExecuteReader();
  • int count = 0;
  • while (dr.Read())
  • {
  • count++;
  • }
  • string[][] request = new string[count + 1][];
  • request[0] = new string[dr.FieldCount];
  • request[0][0] = count.ToString();
  • dr.Close();
  • com = new MySqlCommand(query, ConnectionRessource);
  • dr = com.ExecuteReader();
  • int j = 1;
  • while (dr.Read())
  • {
  • request[j] = new string[dr.FieldCount];
  • for (int i = 0; i < dr.FieldCount; i++)
  • {
  • string tmp = dr.GetString(i);
  • request[j][i] = tmp;
  • }
  • j++;
  • }
  • dr.Close();
  • return request;
  • }
  • catch(Exception)
  • {
  • string[][] request = new string[1][];
  • return request;
  • }
  • }
  • public static int mysql_num_rows(string[][] request)
  • {
  • return int.Parse(request[0][0]);
  • }
  • public static string mysql_error()
  • {
  • if (connected)
  • {
  • if (lastEx != "")
  • {
  • return lastEx;
  • }
  • else
  • {
  • return "Il n'y a encore y aucune erreur";
  • }
  • }
  • else
  • {
  • return "Erreur : Aucune connection SQL n'a encore été établie";
  • }
  • }
  • private static bool connected = false;
  • private static string lastEx = "";
  • private static MySqlCommand com;
  • private static MySqlDataReader dr;
  • private static MySqlConnection ConnectionRessource;
  • }
  • }
using System;
using System.Collections.Generic;
using System.Text;
using MySql.Data.MySqlClient;
 
namespace MySQL
{
    public class SQL
    {
        public static bool mysql_connect(string string_connect)
        {
            try
            {
                ConnectionRessource = new MySqlConnection(string_connect);
                ConnectionRessource.Open();
                connected = true;
                return true;
            }
            catch (Exception Ex)
            {
                lastEx = Ex.Message;
                connected = false;
                return false;
            }
        }

        public static bool mysql_close()
        {
            if (connected)
            {
                try
                {
                    ConnectionRessource.Close();
                    connected = false;
                    return true;
                }
                catch (Exception Ex)
                {
                    lastEx = Ex.Message;
                    return false;
                }
            }
            else
            {
                lastEx = "Aucune connexion n'a encore été ouverte.";
                return false;
            }
        }

        public static string[][] mysql_query(string query)
        {
            try
            {
                com = new MySqlCommand(query, ConnectionRessource);
                dr = com.ExecuteReader();
                int count = 0;
                while (dr.Read())
                {
                    count++;
                }

                string[][] request = new string[count + 1][];
                request[0] = new string[dr.FieldCount];
                request[0][0] = count.ToString();
                dr.Close();

                com = new MySqlCommand(query, ConnectionRessource);
                dr = com.ExecuteReader();
                int j = 1;
                while (dr.Read())
                {
                    request[j] = new string[dr.FieldCount];
                    for (int i = 0; i < dr.FieldCount; i++)
                    {
                        string tmp = dr.GetString(i);
                        request[j][i] = tmp;
                    }
                    j++;
                }
                dr.Close();
                return request;
            }
            catch(Exception)
            {
                string[][] request = new string[1][];
                return request;
            }
        }

        public static int mysql_num_rows(string[][] request)
        {
            return int.Parse(request[0][0]);
        }

        public static string mysql_error()
        {
            if (connected)
            {
                if (lastEx != "")
                {
                    return lastEx;
                }
                else
                {
                    return "Il n'y a encore y aucune erreur";
                }
            }
            else
            {
                return "Erreur : Aucune connection SQL n'a encore été établie";
            }
        }

        private static bool connected = false;
        private static string lastEx = "";
        private static MySqlCommand com;
        private static MySqlDataReader dr;
        private static MySqlConnection ConnectionRessource;
    }
}

 Conclusion

Manuel d'utilisation:

- Pour vous connecter à une base de données MySQL, utilisez la syntaxe suivante :
    prototype -> bool mysql_connect(string string_connect) [aucune surcharge]
    SQL.mysql_connect("Server=base_de_donnes;Database= nom_base_de_donnes;User ID=pseudo;Password=mot_de_passe;");

- Pour effectuer une requete :
    prototype -> string[][] mysql_querry(string querry) [aucune surcharge]
    string[][] sql1 = SQL.mysql_query("SELECT * FROM `users` WHERE id='1'");

    Pour pouvoir ensuite extraire les élément contenu dans le tableau sql1 vous devez utiliser une boucle for:
    for(int i=1;i<=sql1[0][0];i++)
    {
        Console.Writeline(sql[i][3].toString()); //sql[i][3] signifie le champ i et la collone 3
        Console.Writeline(sql[i][6].toString()); //sql[i][6] signifie le champ i et la collone 6
    }

- Pour compter le nombre de résulats :
    prototype -> int mysql_num_rows(string[][] request) [aucune surcharge]
    int count = SQL.mysql_num_rows(sql1); //ou sql1 a été instancié avant grace à la fonction mysql_query

- Pour afficher la dernière erreur :
    prototype -> void mysql_error(void) [aucune surcharge]
    SQL.mysql_error();

- Pour se deconnecter de la base de données
    prototype -> bool mysql_close(void) [aucune surcharge]
    SQL.mysql_close();


/!\ Avertissement
Cette classe étant en version beta, je ne garantis pas sa stabilité, pour plus de fiabilité, je vous conseille de mettre des blocs try catch ou try finnaly un peut partout ou vous utilisez ma classe, essentielement avec la methode mysql_query !

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • MySql.Data.dllTélécharger ce fichier [Réservé aux membres club]143 360 octets
  • MySQL.dllTélécharger ce fichier [Réservé aux membres club]16 384 octets

Télécharger le zip


 Historique

24 octobre 2006 17:57:31 :
Correction d'un petit détail dans le manuel...
24 octobre 2006 18:01:47 :
Mise en ligne de ma dll et de la dll MySQL.data.dll

 Sources de la même categorie

Source .NET (Dotnet) ENTITY FRAMEWORK - AVOIR UN INCLUDE TYPÉ par jesusonline
Source avec Zip APPLICATION BASE DE DONNÉES par pretude
Source avec Zip Source avec une capture Source .NET (Dotnet) CRÉATION DE CLASSES MÉTIERS À PARTIR D'UNE BASE DE DONNÉES par sebmafate
Source avec Zip Source avec une capture Source .NET (Dotnet) C# SQLCE DEMO par DanMor498
Source avec Zip EXPORTATION DE FICHIER CSV VERS UNE TABLE SQLSERVER par imothepe_33

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) ORIONAPPLICATION par toutphp
Source avec Zip Source avec une capture Source .NET (Dotnet) GESTION DE RÉSERVATIONS ET D'OCCUPATIONS DE SALLES UTILISANT... par argoth
Source avec Zip Source .NET (Dotnet) GESTION DE BASES DE DONNÉES ACCESS ET MYSQL par damned3
Source avec Zip Source .NET (Dotnet) EXPLORATEUR MYSQL par bikergete
Source avec Zip Source .NET (Dotnet) DIVERS CLASSES POUR UTILISER MYSQL , ACCESS , SQL SERVER par bernie666

Commentaires et avis

Commentaire de jeb5292 le 24/10/2006 14:50:48

Merci de donner un commentaire pour ma source, cela me permettrait de l'améliorer

Merci
@++
Jean-Ed

Commentaire de vladam le 30/10/2006 08:59:54 administrateur CS

Ou est l'intérêt de ta classe ?
Je crois qu'il ne faut pas partir sur une classe générique comme tu le fais. Je pense au contraire que le développeur devrait utiliser directement les espaces de noms de la librairie de MySQL lui permettant d'optimiser son code.
C'est un avis personnel, mais je pense que les classes déjà présentes dans la librairie "MySql.Data.dll" sont un très bon compromis entre simplicité et fonctionnalités. De plus, tu ne peux pas travailler en requête fortement typée, ce qui est primordial pour fournir un code de qualité, optimisé et robuste (je passerais sur le SQL Injection, les performances, les commentaires, ...).

Commentaire de TheSin le 18/11/2006 09:38:39

Je ne vois pas vraiment l'intérêt de la classe ....
Les exceptions sont les exceptions génériques C# et pas celles de MySQL (MySQLException).
Où sont les gestions d'erreurs ? (c'est quand même super utile lorsque l'on parle avec le SGBD de connaître l'erreur d'une requête par exemple).
Pourquoi renvoyer les résultats d'un "SELECT" en string alors qu'il est nettement plus simple d'utiliser un DataSet ou un DataTable ?

Commentaire de vladam le 18/11/2006 12:00:51 administrateur CS

je suis d'accord avec toi sur presque tout TheSin qu'il faut mieux renvoyer un DataTable fortement typé plutôt qu'un tableau de string.
Il est quand même intéressant des fois de renvoyer un string (pas un tableau) afin d'optimiser le code. Je m'explique :
Si j'ai l'ID d'une personne, et que je veux faire un select du nom uniquement (ex: SELECT Name FROM Users WHERE IdUser=@IdUser).
Dans ce cas, le meilleur moyen est d'utiliser un "ExecuteScalar" et de renvoyer un string.
Mais effectivement, je ne vois pas l'interêt non plus de ce code, car "pourquoi faire ce qui existe déjà, en moins complet et moins bien codé ?"

Commentaire de TheSin le 18/11/2006 14:19:29

En fait, moi pour le genre de cas que tu décris, je me sert du datatables puis du DataRow pour renvoyer directement la bonne valeur.
Au pire j'ai mon datatable et j'utilise la méthode Select().
Merci pour l'info du ExecuteScalar, je devrais m'en servir, j'ai vu un peu cette notion ce matin, je vais donc l'appronfondir :-)

Commentaire de simaxe25 le 16/07/2008 04:16:42

pour info, il aurait été utile de faire un singleton (design pattern) sur ta classe :
- pour ainsi éviter une surcharge inutile des connexion vers le serveur MySql
- et pour pouvoir disposer de la connexion sur l'ensemble du projet

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Connexio avec mysql et envoi de requete[c#] [ par d0d0 ] Bonjour, Je commence actuellment le C# et je souhaiterais me connecter à une bdd mysql et effectuer diverses requete.Pourriez vous m'indiquez comment Créer un installeur [ par d0d0 ] Je travaille sur un programme qui se connecte à une bdd mysql, j'ai donc besoin des driver odbc et mysql.Tout fonctionne sur mon pc.Comment puis je cr Probleme de connection avec ODBC [ par micolorigolo ] Bonjour, je souhaite faire une connection avec ODBC sur mysql, j'ai installé odbc pour .net, les drivers odbc de mysql, le MDAC 2.7. mais malgrès tout [MySQL] Utilisation de drivers Natifs [ par CyKloNe ] Bonjour,Quelqu'un aurait il des exemples concrets de codes utilisant soit le driver ByteFX ou le drivers ou de MySQLDriverCS, impossible de faire fonc pb de lecture de la fonction describe de Mysql [ par JulSoft ] Je n'arrive pas à lire la valeur "default" des resultats renvoyés par la fonction describe de mysql en c#. Pourtant, d'autres requetes fonctionnent tr DataSet avec MySQDriverCS [ par benjamin33 ] Bonjourj'ai une BD Mysql que j'utilise via MySQDriverCSConnaissez vous un moyen d'utiliser les DataSet (Mysql-&gt;Dataset et Dataset -&gt;Mysql)Merci MySQL connection [ par Choumi1980 ] Hello à tous adepte de C#,Y a t il qq'un qui sache me dire comment se connecter à une DB MySQL en c#.Voilà ce que j'utilise :protected const string m_ Afficher DB MySQL [ par Choumi1980 ] Hello tous le monde,Est-ce qq'un sait comment afficher les différentes DB MySQL existante sur le server en c#.Merci d'avance ;) Informations serveur MySQL [ par Choumi1980 ] Hello,Est-ce que qq'un sait comment afficher les infos d'un serveur MySql avec C# çàd afficher le nom du serveur et ces bases de données.Merci à mon f mysql c# [ par kach23 ] bon jour,j'ai teste une application asp.net avec mysql et c# sous windows.j'ai trouvé une librairie grace à un forum(ptete ici je c plus) qui me perme


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 2,215 sec (3)

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