D
delete221380
Yop all c'est DEVR0, aujourd'hui on ce retrouve pour l'épisode 4 de ma série de tuto consacré a la programmation.
Dans cet épisode nous allons voir comment manager votre base de données MySQL (création de compte utilisateurs, suppression, connexion en tant qu'utilisateur) depuis une WindowsForm
Mon résultat final ressemble à ceci :
L'inventaire de ce qu'il vous faudra :
Créations de votre projets, références, ajout des composants :
Faite comme a votre habitude, créez un nouveau projet C# Windows Form, ajoutez le nom que vous voulez
Ajouter les références télécharger plus tôt.
Déclaré ensuite leurs utilisations
Pour ce qui est de l'ajout des composant j'ai choisit d'afficher les bases de données dans une comboBox et le nom des table (table de chaque BDD) dans une listView
Si vous avez créer plusieurs base de données c'est plus simple de se servir d'une comboBox
Cette partie sert juste a afficher les bases de données présentes et le nom de chaque table, vous ne pouvez en aucun cas voir le contenue de la table, on vérra comment faire juste après
Commençons par faire une requête de connexion a la base de données :
Ajoutez le nombres de textBox qu'il vous faut, en générale une connexion a une base de données requiert : un identifiant, un mot de passe, le serveur; et la base de données en elle même
Une fois vos composants ajouter, créer une instance dans public partial class :
comme ceci
Ensuite rendez-vous dans votre bouton "Connexion", ou ce qui vous sert a valider vos identifiants pour vous connecté
Vous pouvez voir que j'ai un morceaux de code qui indiquera une erreur, c'est une appel a la fonction GetDataBases. cette fonction servira a obtenir les bases de données ainsi que le nom des table
Vous devez donc créer cette fonction
Code de la fonction GetDataBase (relié a la connexion) qui donnera les info des BDD et nom des tables :
Si tout c'est bien passer vous une fois connecté vous devez avoir des informations dans la ComboBox comme ceci
Pour pouvroir obtenir les tables présente dans les BDD vous devez cliquer sur votre comboBox, allez dans les évenement et chercher double cliquer sur l'évenement SelectedIndexChanged
Une fois dans le code vous avez juste a entré la fonction suivante :
Si tout a bien fonctionne vous devriez avoir quelques choses similaire a ceci :
Si vous n'avez pas le même affichage que moi au niveau de la listView > Rendez vous dans les propriété de la litView > View vous mettez sur details ou list (de base c'est sur largeIcon)
Obtenir les données d'une table comme une table utilisateurs (par exemple) :
Cette partie va être très brève pour la simple et bonne raison que quasiment tout est a modifié par vous même, puisque c'est votre base de données avec vos tables et vos colones
Pour ma part j'ai créer un bouton pour obtenir les données d'une table précises, je veut afficher les données dans une autres listView
Nous devons également redéclaré une instance puisque l'autre connexion est toujours active, toujours pas public patial class
Le nom des colone doit être identiques a celle de votre phpMyAdmin
Comme ceci : Si vous regarder bien dans le code on retrouve les meme nom que sur phpMyAdmin (Username, Passowr, HWID, Mac, Contact, Buy)
PhpMyAdmin
Comment ajouter un utilisateurs depuis mon logiciel ?
Pour ce faire vous devez ajouter de quoi remplir un formulaire, comme si vous rajouter sur phpMyAdmin, il faudra donc remèttre les même champs que ceux de votre phpMyAdmin
Dans mon cas je doit ajouter ceci : (ce qui est égale a mes colones)
Une fois ceci fait, double cliquer sur votre bouton Ajouter utilisateurs et inséré le code suivant :
On refait encore une requête de connexion MySQL
Attention cette ligne est très importante :
INSERT INTO 'base de donnée'.'Votre table souhaité'
pensé aussi a bien remplacer par les même nom de colones !
Comment supprimer un utilisateurs depuis mon logiciel?
C'est identique a la partie précédente pour ajouter un utilisateurs mais vous remplacer juste la commande MySQL
Juste cette partie change
DELETE FROM `base de donnée`.`la table`
Si vous remplacer bien par vos textBox et vos valeur il n'y aura aucun problème
Faire une connexion depuis une autre Form ?
Ce système vous servira a mèttre un panel de connexion sur votre logiciel pour que seul les utilisateurs enregistré peuvent y accédé pour ce faire nous allons utilisé la fonction COUNT
Pour ce faire créer simplement une Form avec 2 textBox, user et Pass et un bouton connexion
Dans le code de votre bouton vous y ajouter simplement ceci :
Ce système est bien mais pour vous connecté vous devez donner les informations de sécurité de la BDD , je vous conseille donc de bien protégé votre tool pour ne pas vous faire voler votre base de donnée
Dans cet épisode nous allons voir comment manager votre base de données MySQL (création de compte utilisateurs, suppression, connexion en tant qu'utilisateur) depuis une WindowsForm
Mon résultat final ressemble à ceci :

L'inventaire de ce qu'il vous faudra :
- Visual Studio ou Visual C#.
- Les DLL MySQL.Data & MySQL.Web.>
Vous devez être inscrit pour voir les liens ! Inscrivez-vous ou connectez-vous ici.
- De la patience.
Créations de votre projets, références, ajout des composants :
Faite comme a votre habitude, créez un nouveau projet C# Windows Form, ajoutez le nom que vous voulez
Ajouter les références télécharger plus tôt.
Déclaré ensuite leurs utilisations
Code:
using MySql.Data.MySqlClient;
using MySql.Web.Common;
Pour ce qui est de l'ajout des composant j'ai choisit d'afficher les bases de données dans une comboBox et le nom des table (table de chaque BDD) dans une listView
Si vous avez créer plusieurs base de données c'est plus simple de se servir d'une comboBox
Cette partie sert juste a afficher les bases de données présentes et le nom de chaque table, vous ne pouvez en aucun cas voir le contenue de la table, on vérra comment faire juste après
Commençons par faire une requête de connexion a la base de données :
Ajoutez le nombres de textBox qu'il vous faut, en générale une connexion a une base de données requiert : un identifiant, un mot de passe, le serveur; et la base de données en elle même
Une fois vos composants ajouter, créer une instance dans public partial class :
comme ceci
Code:
private MySqlConnection conn;
Ensuite rendez-vous dans votre bouton "Connexion", ou ce qui vous sert a valider vos identifiants pour vous connecté
Code:
if (this.conn != null)
{
this.conn.Close();
}
object[] text = new object[] { this.textBoxServeur.Text, this.textBoxUser1.Text, this.textBoxPass.Text, this.textBoxBDD.Text };
string connStr = string.Format("server={0};uid={1};pwd={2};database={3}", text);
try
{
this.conn = new MySqlConnection(connStr);
this.conn.Open();
this.GetDatabases();
MessageBox.Show(string.Concat("Connexion établit a l'hote distant : ", this.textBoxUser.Text, " réussit"), "Succès", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
catch (MySqlException mySqlException)
{
MySqlException ex = mySqlException;
MessageBox.Show(string.Concat("Error connecting to the server: ", ex.Message));
}
Vous pouvez voir que j'ai un morceaux de code qui indiquera une erreur, c'est une appel a la fonction GetDataBases. cette fonction servira a obtenir les bases de données ainsi que le nom des table
Vous devez donc créer cette fonction
Code de la fonction GetDataBase (relié a la connexion) qui donnera les info des BDD et nom des tables :
Code:
private void GetDatabases()
{
MySqlDataReader reader = null;
MySqlCommand cmd = new MySqlCommand("SHOW DATABASES", this.conn);
try
{
try
{
reader = cmd.ExecuteReader();
this.databaseList.Items.Clear();//Ceci est la comboBox qui affiche les bases de données
while (reader.Read())
{
this.databaseList.Items.Add(reader.GetString(0)); //Ceci est la comboBox qui affiche les bases de données
}
}
catch (MySqlException mySqlException)
{
MySqlException ex = mySqlException;
MessageBox.Show(string.Concat("Failed to populate database list: ", ex.Message));
}
}
finally
{
if (reader != null)
{
reader.Close();
}
}
}


Une fois dans le code vous avez juste a entré la fonction suivante :
Code:
MySqlDataReader reader = null;
this.conn.ChangeDatabase(this.databaseList.SelectedItem.ToString()); //La comboBox qui obtient les base de donné
MySqlCommand cmd = new MySqlCommand("SHOW TABLES", this.conn);
try
{
try
{
reader = cmd.ExecuteReader();
this.tables.Items.Clear();
while (reader.Read())
{
this.tables.Items.Add(reader.GetString(0));//Ceci est la ListView présenté
}
}
catch (MySqlException mySqlException)
{
MySqlException ex = mySqlException;
MessageBox.Show(string.Concat("Erreur lors du chargement des tables \nMySQl Renvoie ceci : ", ex.Message));
}
}
finally
{
if (reader != null)
{
reader.Close();
}
}
Si tout a bien fonctionne vous devriez avoir quelques choses similaire a ceci :

Obtenir les données d'une table comme une table utilisateurs (par exemple) :
Cette partie va être très brève pour la simple et bonne raison que quasiment tout est a modifié par vous même, puisque c'est votre base de données avec vos tables et vos colones
Pour ma part j'ai créer un bouton pour obtenir les données d'une table précises, je veut afficher les données dans une autres listView
Nous devons également redéclaré une instance puisque l'autre connexion est toujours active, toujours pas public patial class
Code:
private MySqlConnection con;
Code:
this.listView2.Items.Clear();//List View pour obtenir les utilisateurs
this.listView2.BeginUpdate();//On commence a l'actualisé
this.listView2.View = View.Details;//On lui assigne la propriété view details
string sql = "select * from User";//user est le nom de la table souhaité
object[] text = new object[] { this.textBoxServer.Text, this.textBoxUser.Text, this.textBoxPass.Text, this.textBoxBDD.Text };
this.con = new MySqlConnection(string.Format("server={0};uid={1};pwd={2};database={3}", text));
this.con.Open();
DataTable dt = new DataTable();
(new MySqlDataAdapter(sql, this.con)).Fill(dt);
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow dr = dt.Rows[i];
ListViewItem listitem = new ListViewItem(dr["Username"].ToString()); //ce sont les nom de vos colone
listitem.SubItems.Add(dr["Password"].ToString());
listitem.SubItems.Add(dr["HWID"].ToString());
listitem.SubItems.Add(dr["MAC"].ToString());
listitem.SubItems.Add(dr["Contact"].ToString());
listitem.SubItems.Add(dr["Buy"].ToString());
this.listView2.Items.Add(listitem);
}
this.con.Close();//On ferme la connexion
this.listView2.EndUpdate();//On arrete d'acutalisé
Le nom des colone doit être identiques a celle de votre phpMyAdmin
Comme ceci : Si vous regarder bien dans le code on retrouve les meme nom que sur phpMyAdmin (Username, Passowr, HWID, Mac, Contact, Buy)
PhpMyAdmin

Pour ce faire vous devez ajouter de quoi remplir un formulaire, comme si vous rajouter sur phpMyAdmin, il faudra donc remèttre les même champs que ceux de votre phpMyAdmin
Dans mon cas je doit ajouter ceci : (ce qui est égale a mes colones)

On refait encore une requête de connexion MySQL
Code:
try
{
MySqlCommand cmd = new MySqlCommand();
object[] text = new object[] { this.textBoxServer.Text, this.textBoxUser.Text, this.textBoxPass.Text, this.textBoxBDD.Text };
this.con = new MySqlConnection(string.Format("server={0};uid={1};pwd={2};database={3}", text));
string[] strArrays = new string[] { "INSERT INTO `freeh_db_65139`.`User` (`Username`, `Password`, `HWID`, `MAC`, `Contact`, `Buy`) VALUES ('", textBoxUserName.Text, "', '", this.textBoxPassword.Text, "', '", this.textBoxHWID.Text, "', '", this.textBoxMAC.Text, "', '", this.textBoxContact.Text, "', '", this.textBoxBuy.Text, "');" };
cmd.CommandText = string.Concat(strArrays);
cmd.CommandType = CommandType.Text;
cmd.Connection = this.con;
this.con.Open();
cmd.ExecuteReader();
this.con.Close();
MessageBox.Show("Compte créer avec succès", "Succès", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
catch (MySqlException mySqlException)
{
MySqlException ex = mySqlException;
MessageBox.Show(string.Concat("Erreur lors de la création du compte\n MySQL renvoie l'erreur : ", ex.Message), "Succès", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
Attention cette ligne est très importante :
Code:
string[] strArrays = new string[] { "INSERT INTO `freeh_db_65139`.`User` (`Username`, `Password`, `HWID`, `MAC`, `Contact`, `Buy`) VALUES ('", textBoxUserName.Text, "', '", this.textBoxPassword.Text, "', '", this.textBoxHWID.Text, "', '", this.textBoxMAC.Text, "', '", this.textBoxContact.Text, "', '", this.textBoxBuy.Text, "');" };
INSERT INTO 'base de donnée'.'Votre table souhaité'
pensé aussi a bien remplacer par les même nom de colones !
Comment supprimer un utilisateurs depuis mon logiciel?
C'est identique a la partie précédente pour ajouter un utilisateurs mais vous remplacer juste la commande MySQL
Juste cette partie change
Code:
string[] strArrays = new string[] { "DELETE FROM `freeh_db_65139`.`User` WHERE `User`.`Username` = '", this.textBoxUser.Text, "' AND `User`.`Password` = '", this.textBoxPass.Text, "' AND `User`.`HWID` = '", this.textBoxHWID.Text, "' AND `User`.`MAC` = '", this.textBoxMAC.Text, "' AND `User`.`Contact` = '", this.textBoxContact.Text, "' AND `User`.`Buy` = '", this.textBoxBuy.Text, "' LIMIT 1;);" };
DELETE FROM `base de donnée`.`la table`
Si vous remplacer bien par vos textBox et vos valeur il n'y aura aucun problème
Faire une connexion depuis une autre Form ?
Ce système vous servira a mèttre un panel de connexion sur votre logiciel pour que seul les utilisateurs enregistré peuvent y accédé pour ce faire nous allons utilisé la fonction COUNT
Pour ce faire créer simplement une Form avec 2 textBox, user et Pass et un bouton connexion
Dans le code de votre bouton vous y ajouter simplement ceci :
Code:
string cmdStr = "SELECT COUNT(*) FROM `base de donnée`.`Table` WHERE Username = '" + textBoxUser.Text + "' AND Password = '" + textBoxPass.Text + "'";
string connStr = String.Format("server={0};uid={1};pwd={2};database={3}",
"server", "user", "pass", "base de donné");
con = new MySqlConnection(connStr);
using (MySqlConnection conn = new MySqlConnection(connStr))
{
MySqlCommand cmd = new MySqlCommand(cmdStr, conn);
conn.Open();
MySqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
int count = reader.GetInt32(o);
if (count == 0)
{
MessageBox.Show("Connexion impossible, Raison possible\n\n- Ce compte n'existe pas\n- Les identifiants saisies sonts incorrected\n- Votre Adresse MAC ne correspond pas\n- Votre HWID ne correspond pas", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else if (count == 1)
{
MessageBox.Show("Connextion en tant que, " + textBoxUser.Text + " réussit", "Succès", MessageBoxButtons.OK, MessageBoxIcon.Information);
;
}
Ce système est bien mais pour vous connecté vous devez donner les informations de sécurité de la BDD , je vous conseille donc de bien protégé votre tool pour ne pas vous faire voler votre base de donnée
Préféré un système de connexion avec une API reste encore une des meilleurs solutions.
/!\ merci de ne pas copier/coller sans crédits /!\
EDIT : A CEUX QUI ONT DES SOUCIS : PASSER PAR LE SYSTME DE @Baptiste
SON TOPIC ICI
Série de tuto :
Episode précédent : Episode 3 clique ici
Episode suivant : En consruction
/!\ merci de ne pas copier/coller sans crédits /!\
EDIT : A CEUX QUI ONT DES SOUCIS : PASSER PAR LE SYSTME DE @Baptiste
SON TOPIC ICI
Série de tuto :
Episode précédent : Episode 3 clique ici
Episode suivant : En consruction
Dernière édition par un modérateur: