samedi 24 mai 2014

Application mobile : mini SGBD (suite)

Création des tables :
        On peut commencer par choisir la BD qu’on veut utiliser soit graphiquement avec un « openfiledialog »(fig9) ou manuellement, si on connait bien sûr le chemin exacte. Il faut ensuite remplir le champ du «password», et le nom de la table (fig8).

Pour ajouter les colonnes composant la table, il faut remplir les champs nécessaires (fig10)(nom,  type, taille…) colonne après colonne en cliquant sur le bouton « ajouter colonne ». Une fois terminé, on doit valider pour créer la table. Pour vérifier il suffit d’aller au programme « query analyzer », ouvrir la BD et chercher la table (fig11).

Code source de la création d’une table:

using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace applicationMobile
{
    public partial class ajoutab : Form
    {
        int i = 1;
        public ajoutab()
        {
            InitializeComponent();
        }
         private void Form3_Load(object sender, EventArgs e)
        {
            cB1.Items.Add("INT");
            cB1.Items.Add("NVARCHAR");
            cB1.Items.Add("REAL");
            cB1.Items.Add("DATETIME");
            cB1.Items.Add("NCHAR");
          
            lb4.Text = "Nom de la " + i + "° colonne:";
            lb5.Text = "Type de la " + i + "° colonne:";
        }
         private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog diag = new OpenFileDialog();
            diag.Filter = "fichier BD|*.sdf";
            diag.ShowDialog();
            tB1.Text = diag.FileName;
        }
         private void button2_Click(object sender, EventArgs e)
        {
            this.Close();
        }
         private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                if (gestion.colonn != "" && tB3.Text != "")
                {
                    gestion.conn.ConnectionString = "DataSource=" + tB1.Text + ";Pwd=" + tB2.Text;
                    gestion.conn.Open();
                    gestion.com.CommandText = "CREATE TABLE " + tB3.Text + "(" + gestion.colonn + ")";
                    gestion.com.Connection = gestion.conn;
                    gestion.com.ExecuteNonQuery();
                    gestion.conn.Close();
                }
                else
                {
                    MessageBox.Show("Il faut remplir le nom de la table et au moins ajouter une colonne", "Alert:");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("error:" + ex.Message,"Alert:");
             }
        }
         private void button4_Click(object sender, EventArgs e)
        {
            string pk;
            string notnull;
            string taill;
            if (tB4.Text != "" && cB1.Text != "")
            {
                if (checkBox1.Checked)
                    pk = "PRIMARY KEY";
                else pk = "";
                if (checkBox2.Checked && !checkBox1.Checked)
                    notnull = "NOT NULL";
                else notnull = "";
                if (cB1.Text == "INT" || cB1.Text == "REAL")
                    taill = "";
                else taill = "(" + textBox1.Text + ")";
                if (gestion.colonn == "")
                {
                    gestion.colonn = tB4.Text + " " + cB1.Text+taill+" "+pk+" "+notnull;
                    tB4.Text = "";
                    cB1.Text = null;
                    textBox1.Text = "";
                    checkBox1.Checked = false;
                    checkBox2.Checked = false;
                    i++;
                    lb4.Text = "Nom de la " + i + "° colonne:";
                    lb5.Text = "Type de la " + i + "° colonne:";
                }
                else
                {
                    gestion.colonn = gestion.colonn + " ," + tB4.Text + " " + cB1.Text + taill + " " + pk + " " + notnull;
                    tB4.Text = "";
                    cB1.Text = null;
                    textBox1.Text = "";
                    checkBox1.Checked = false;
                    checkBox2.Checked = false;
                    i++;
                    lb4.Text = "Nom de la " + i + "° colonne:";
                    lb5.Text = "Type de la " + i + "° colonne:";
                }
            }
            else
            {
                MessageBox.Show("Il faut remplir les 2 champs!", "Avertissement:");
            }
        }
    }
}

Suppression d’une table:
Comme à la création d’une table, pour supprimer cette dernière  il suffit de choisir la BD, entrer le password et cliquer sur « valider ». On aura par conséquent la liste des tables(fig12). On choisit la table qu’on veut supprimer et on clique sur « supprimer ». Bien sûr on va avoir un message de confirmation(fig13). 

Si on clique sur « oui » la table sera immédiatement supprimée(fig14).

Code source de la suppression d’une table:

using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace applicationMobile
{
    public partial class supp : Form
    {
        public supp()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog diag = new OpenFileDialog();
            diag.Filter = "fichier BD|*.sdf";
            diag.ShowDialog();
            tB1.Text = diag.FileName;
        }

        private void button2_Click_1(object sender, EventArgs e)
        {
            try
            {
                comboBox1.Items.Clear();
                gestion.conn.ConnectionString = "DataSource=" + tB1.Text + ";Pwd=" + tB2.Text;
                gestion.conn.Open();
                gestion.com.CommandText = "SELECT table_name FROM information_schema.tables where table_type='TABLE'; ";
                gestion.com.Connection = gestion.conn;
                gestion.dr = gestion.com.ExecuteReader();
                gestion.dt = new DataTable();
                gestion.dt.Load(gestion.dr);
                gestion.dr = gestion.com.ExecuteReader();
                int i = 0;
                while (gestion.dr.Read())
                {
                    comboBox1.Items.Add(gestion.dt.Rows[i][0].ToString());
                    i++;
                }
                gestion.dr.Close();
                gestion.conn.Close();
                
            }
            catch (Exception ex) { MessageBox.Show("error:" + ex.Message); }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                DialogResult res = MessageBox.Show("Voulez vous vraiment supprimer la table séléctionnée?","suppresseion",MessageBoxButtons.YesNo,MessageBoxIcon.Question,MessageBoxDefaultButton.Button1);

                if (res == DialogResult.Yes)
                {
                    gestion.conn.ConnectionString = "DataSource=" + tB1.Text + ";Pwd=" + tB2.Text;
                    gestion.conn.Open();
                    gestion.com.CommandText = "DROP TABLE \"" + comboBox1.Text + "\"";
                    gestion.com.Connection = gestion.conn;
                    gestion.com.ExecuteNonQuery();
                    MessageBox.Show("La table a été bien supprimée");
                    comboBox1.Text = null;
                    gestion.conn.Close();
                }
                           }
            catch (Exception ex) { MessageBox.Show(ex.Message, "Alert"); }
                   }
    }
}
Insertion dans une table :
                  Pour la partie « insertion des enregistrements » on a utilisé presque le même principe de la création d’une table, sauf qu’ici, au lieu d’entrer le nom de la table, l’application se charge de charger un contrôleur de type combobox  par la liste des tables qui se trouvent dans cette BD(fig15). Une fois faite, elle s’adapte selon le nombre des colonnes de la table choisie en donnant le nom de chaque colonne ainsi que son type(fig16).
 Si l’utilisateur ne fait pas d’erreurs, il aura un message de confirmation d’insertion (fig17). Sinon, il aura un message d’erreur.

Code source de l’insertion:

using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
 namespace applicationMobile
{
    public partial class insert : Form
    {
        string colonn="";
        string typ;
        int i=0;
        public insert()
        {
            InitializeComponent();
        }
         private void button1_Click_1(object sender, EventArgs e)
        {
            OpenFileDialog diag = new OpenFileDialog();
            diag.Filter = "fichier BD|*.sdf";
            diag.ShowDialog();
            tB1.Text = diag.FileName;
        }

       private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                gestion.conn.ConnectionString = "DataSource=" + tB1.Text + ";Pwd=" + tB2.Text;
                gestion.conn.Open();
                gestion.com.CommandText = "SELECT table_name FROM information_schema.tables where table_type='TABLE'; ";
                gestion.com.Connection = gestion.conn;
                gestion.dr = gestion.com.ExecuteReader();
                gestion.dt = new DataTable();
                gestion.dt.Load(gestion.dr);
                gestion.dr = gestion.com.ExecuteReader();
                int i = 0;
                while (gestion.dr.Read())
                {
                    comboBox1.Items.Add(gestion.dt.Rows[i][0].ToString());
                    i++;
                }
                gestion.dr.Close();
                gestion.conn.Close();
            }
            catch (Exception ex) { MessageBox.Show("error:" + ex.Message); }
        }
        private void button5_Click(object sender, EventArgs e)
        {
            gestion.conn.ConnectionString = "DataSource=" + tB1.Text + ";Pwd=" + tB2.Text;
            gestion.conn.Open();
            gestion.com.CommandText = "SELECT column_name,data_type FROM information_schema.columns where table_name='" + comboBox1.Text + "'; ";
            gestion.com.Connection = gestion.conn;
            gestion.dr = gestion.com.ExecuteReader();
            gestion.dt = new DataTable();
            gestion.dt.Load(gestion.dr);
            label4.Text = "Valeur de : " + gestion.dt.Rows[0][0] + " de type:" + gestion.dt.Rows[0][1];
            gestion.conn.Close();
        }

        private void button6_Click(object sender, EventArgs e)
        {
            i = 0;
            try
            {
                if (i <= gestion.dt.Rows.Count)
                {
                    typ=gestion.dt.Rows[i][1].ToString();
                    if (colonn == "")
                    {
                        if ( typ == "int" || typ == "real")
                        {
                            colonn = textBox1.Text;
                        }
                        else colonn = "'" + textBox1.Text + "'";
                    }
                    else
                    {
                        if (typ == "int" || typ == "real")
                        {
                            colonn =colonn+","+textBox1.Text;
                        }
                        else colonn =colonn+",'" + textBox1.Text + "'";
                    }
                    i++;
                    textBox1.Text = "";

                    if (i <= gestion.dt.Rows.Count)
                    {
                        label4.Text = "Valeur de : " + gestion.dt.Rows[i][0] + " de type: " + gestion.dt.Rows[i][1];
                    }
                    else { label4.Text = "Valeur de:"; }
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message, "Attention!"); }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void button3_Click(object sender, EventArgs e)
        {
          
            try
            {
                gestion.conn.ConnectionString = "DataSource=" + tB1.Text + ";Pwd=" + tB2.Text;
                gestion.conn.Open();
                gestion.com.CommandText = "insert into "+comboBox1.Text+" values ("+colonn+");";
                gestion.com.Connection = gestion.conn;
                gestion.com.ExecuteNonQuery();
                MessageBox.Show("la ligne a été inseré avec succes:)");
                gestion.conn.Close();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void label4_ParentChanged(object sender, EventArgs e)
        {

        }
    }
}

  4. Affichage :

Pour l’affichage, l’utilisateur est appelé à choisir la BD, entrer le password et cliquer sur valider pour choisir la table qu’il veut afficher(fig18). On aura par conséquent le résultat en cliquant sur le bouton « afficher » (fig19).

Code source de l’affichage:

using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace applicationMobile
{
    public partial class affich : Form
    {
        public affich()
        {
            InitializeComponent();
        }
         private void affich_Load(object sender, EventArgs e)
        {
            dataGrid1.Hide();
        }
         private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog diag = new OpenFileDialog();
            diag.Filter = "fichier BD|*.sdf";
            diag.ShowDialog();
            tB1.Text = diag.FileName;
        }
         private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                gestion.conn.ConnectionString = "DataSource=" + tB1.Text + ";Pwd=" + tB2.Text;
                gestion.conn.Open();
                gestion.com.CommandText = "SELECT table_name FROM information_schema.tables where table_type='TABLE'; ";
                gestion.com.Connection = gestion.conn;
                gestion.dr = gestion.com.ExecuteReader();
                gestion.dt = new DataTable();
                gestion.dt.Load(gestion.dr);
                gestion.dr = gestion.com.ExecuteReader();
                comboBox1.Items.Clear();
                int i = 0;
                while (gestion.dr.Read())
                {
                    comboBox1.Items.Add(gestion.dt.Rows[i][0].ToString());
                    i++;
                }
                gestion.dr.Close();
                gestion.conn.Close();
            }
            catch (Exception ex) { MessageBox.Show("error:" + ex.Message); }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                gestion.conn.ConnectionString = "DataSource=" + tB1.Text + ";Pwd=" + tB2.Text;
                gestion.conn.Open();
                gestion.com.CommandText = "SELECT * FROM "+comboBox1.Text+"; ";
                gestion.com.Connection = gestion.conn;
                gestion.dr = gestion.com.ExecuteReader();
                gestion.dt = new DataTable();
                gestion.dt.Load(gestion.dr);
                dataGrid1.DataSource = gestion.dt;
                dataGrid1.Show();
                gestion.dr.Close();
                gestion.conn.Close();
            }
            catch (Exception ex) { MessageBox.Show("error:" + ex.Message); }
        }
    }
}

Code source relatif aux variables globales :

using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlServerCe;
using System.Data;

namespace applicationMobile
{
    public static class gestion
    {
        public static SqlCeConnection conn = new SqlCeConnection();
        public static SqlCeCommand com = new SqlCeCommand();
        public static SqlCeDataReader dr;
        public static DataTable dt;
        public static ajouBD F2;
        public static ajoutab F3;
        public static insert F4;
        public static table tab;
        public static supp sup;
        public static affich aff;
        public static String colonn;
    }
}
Categories: ,