C# Classe pour utiliser une DB

Exemple à adapter en fonction de la DB (ci-dessous MySql) et à indenter (car pas beau comme cela ^^ )

Et surtout à configurer comme l’on souhaite 🙂

using MySql.Data.MySqlClient;
using System;
using System.Web.UI;
using System.Data;

/// <summary>
/// Description résumée de DbConnect
/// </summary>
public class DbConnect
{
 
 private MySqlConnection connection;
 private string server;
 private string database;
 private string uid;
 private string password;
 Page Page;

//Constructor
 public DbConnect()
 {
 Initialize();
 }

//Initialize values
 private void Initialize()
 {
 server = "MON SERVEUR DE DB";
 database = "DB";
 uid = "USERDB";
 password = "PASSWORDDB";
 string connectionString;
 connectionString = "SERVER=" + server + ";" + "DATABASE=" +
 database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";

connection = new MySqlConnection(connectionString);
 }

//open connection to database
 private bool OpenConnection()
 {
 try
 {
 connection.Open();
 return true;
 }
 catch (MySqlException ex)
 {
 //When handling errors, you can your application's response based 
 //on the error number.
 //The two most common error numbers when connecting are as follows:
 //0: Cannot connect to server.
 //1045: Invalid user name and/or password.
 switch (ex.Number)
 {
 case 0:
 
 MessageBox.Show( "Cannot connect to server. Contact administrator");
 break;

case 1045:
 
 MessageBox.Show("Invalid username/password, please try again");
 break;
 }
 return false;
 }
 }

//Close connection
 private bool CloseConnection()
 {
 try
 {
 connection.Close();
 return true;
 }
 catch (MySqlException ex)
 {
 MessageBox.Show(Page,ex.Message);
 return false;
 }
 }

//Insert statement
 public void Insert(string table, string columTable, string valueTable)
 {
 string query = "INSERT INTO "+table+" (" + columTable + ") VALUES("+ valueTable+")";

//open connection
 if (this.OpenConnection() == true)
 {
 //create command and assign the query and connection from the constructor
 MySqlCommand cmd = new MySqlCommand(query, connection);

//Execute command
 cmd.ExecuteNonQuery();

//close connection
 this.CloseConnection();
 }
 }

//Update statement
 public void Update(string table, string columTable, string valueTable ,string WHERE)
 {
 string query = "UPDATE " + table + " SET " + columTable + "='" + valueTable + "' "+ WHERE + "";

//Open connection
 if (this.OpenConnection() == true)
 {
 //create mysql command
 MySqlCommand cmd = new MySqlCommand();
 //Assign the query using CommandText
 cmd.CommandText = query;
 //Assign the connection using Connection
 cmd.Connection = connection;

//Execute query
 cmd.ExecuteNonQuery();

//close connection
 this.CloseConnection();
 }
 }

//Delete statement
 public void Delete()
 {
 string query = "DELETE FROM tableinfo WHERE name='John Smith'";

if (this.OpenConnection() == true)
 {
 MySqlCommand cmd = new MySqlCommand(query, connection);
 cmd.ExecuteNonQuery();
 this.CloseConnection();
 }
 }

//Select statement 
 public DataTable Select (string colum ,string table )
 {
 string query = "SELECT "+ colum+" FROM "+ table+"";
 DataTable select = new DataTable();
 //Open connection
 if (this.OpenConnection() == true)
 {
 //Create Command
 MySqlCommand cmd = new MySqlCommand(query, connection);
 //Create a data reader and Execute the command
 MySqlDataReader dataReader = cmd.ExecuteReader();
 select.Load(dataReader);
 //close Data Reader
 dataReader.Close();
 
 //close Connection
 this.CloseConnection();

//return list to be displayed
 return select;
 }
 else
 {
 return select;
 }
 }

//Count statement
 public int Count()
 {
 string query = "SELECT Count(*) FROM tableinfo";
 int Count = -1;

//Open Connection
 if (this.OpenConnection() == true)
 {
 //Create Mysql Command
 MySqlCommand cmd = new MySqlCommand(query, connection);

//ExecuteScalar will return one value
 Count = int.Parse(cmd.ExecuteScalar() + "");

//close Connection
 this.CloseConnection();

return Count;
 }
 else
 {
 return Count;
 }
 }


}

2 thoughts on “C# Classe pour utiliser une DB”

  1. Bugu dit :

    Bonjour,

    Votre code n’est pas très propre et je ne parle pas de l’indentation (ça peut se comprendre).
    Vous n’avez rien fait de faux en soit, je vais énumérer les quelques points qui me chagrine…

    – MessageBox dans un catch. Vous venez d’écrire une classe, vous ne savez pas où, comment, par qui va être utiliser votre classe. ça ne sera pas forcément dans une application Winforms par exemple. Un catch est fait pour gérer l’erreur mais pas gérer l’affichage de l’erreur.
    – Vos données membres ne sont pas initialisées.
    – C’est quoi Page page ?
    – les différents concaténations de chaînes … Utiliser Format.String !
    – Prenez l’habitude d’utiliser using, ou d’utiliser dispose

    Il y a d’autres chose mais j’ai plus envi d’écrire.

    1. Michael Ruffenach dit :

      Hello

      Merci beaucoup pour vos commentaires

      Concernant l’indentation effectivement ce n’est pas pratique sur mon site il faut que je me trouve un plugging 🙂

      Aprés j’avoue ne pas avoir “variabilisé” si je puis dire au maximum je m’en suis servi lors de l’un de mes projets

      Je retiens quelques conseils constructif n’étant pas développeur de base , toute remarque constructive est toujours bonne à prendre 😉

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *