none
Problème de requête MySQL RRS feed

  • Question

  • Bonjour j'utilise le serveur db4free.net et il se trouve que j'arrive bel et bien à me connecter à leur serveur mais je n'arrive pas à effectuer de requêtes.


    Je n'arrive pas à récupérer, les informations de ma BDD. Comment je fait pour récuperer ce que je cherche dans la base de donnée?

    string MySQLCmd = "SELECT * FROM compte";// On associe cette requête à la propriété SelectCommand du MySqlDataAdapterMyAdapter.SelectCommand = new MySqlCommand(MySQLCmd, Connection);




    Il faut que je stock ça dans une variable, comment?
    Je voulais savoir aussi si mon code est faut:
    <code type="csharp">

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using MySql.Data.MySqlClient;using System.Diagnostics;namespace WindowsFormsApplication1{    public partial class Form1 : Form    {        private MySqlConnection Connection = new MySqlConnection();        private MySqlDataAdapter MyAdapter = new MySqlDataAdapter();        private DataSet ds = new DataSet();        private System.Windows.Forms.DataGrid dataGrid1;        public Form1()        {            InitializeComponent();            string temps = DateTime.Now.ToString("dd/mm/yy HH:mm");            string chemin = Environment.GetCommandLineArgs()[0];            double version = 1.28;            string systeme_exploitation = Environment.OSVersion.ToString();            richTextBox1.Text = richTextBox1.Text.Insert(richTextBox1.SelectionStart, temps + "\r\n");            richTextBox1.Text = richTextBox1.Text.Insert(richTextBox1.SelectionStart, " >" + temps + " Starting Universal version: ' " + version + " '    Environment(Language:C#; OS:" + systeme_exploitation + ";) \r\n >Running: " + chemin + "");        }        private void testconection_ButtonClick(object sender, EventArgs e)        {                  }        private void testconection_Click(object sender, EventArgs e)        {            toolStripProgressBar1.Value = 50;            toolStripStatusLabel1.Text = "connection";            richTextBox1.Text = richTextBox1.Text.Insert(richTextBox1.SelectionStart, " >Tentative de connection au serveur DB4free.net\r\n");            MySqlConnection conn = new MySqlConnection("database=ma database;server=db4free.net;User Id=ma database; PWD=mon mot de passe");            try            {                conn.Open();                richTextBox1.Text = richTextBox1.Text.Insert(richTextBox1.SelectionStart, " >Connection établie!\r\n");                toolStripProgressBar1.Value = 100;                string MySQLCmd = "SELECT * FROM compte";                // On associe cette requête à la propriété SelectCommand du MySqlDataAdapter                MyAdapter.SelectCommand = new MySqlCommand(MySQLCmd, Connection);                // On remplit le dataset avec le résultat de la commande SELECT                MyAdapter.Fill(ds);                // On affiche le datagrid                dataGrid1.DataSource = ds.Tables[0];                dataGrid1.Refresh();                // On ferme la connexion le plus tôt possible                Connection.Close();                toolStripStatusLabel1.Text = "Les informations sur votre compte ont bien été chargées!";            }            catch (MySqlException ex)            {                richTextBox1.Text = richTextBox1.Text.Insert(richTextBox1.SelectionStart, ex.ToString());                toolStripProgressBar1.Value = 0;                toolStripStatusLabel1.Text = "Impossible de se connecter à la base de donnée.";                //MessageBox.Show(ex.ToString());            }            //string connStr = "database=ma database;server=db4free.net;User Id=ma database; PWD=mon mot de passe";            //MySql.Data.MySqlClient.MySqlConnection m_conn = new MySql.Data.MySqlClient.MySqlConnection(connStr);            //string mySqlQuery = "INSERT INTO compte (id, login, mdp) VALUES (NULL, 'monpseudotest', 'monmdptest');";            //MySql.Data.MySqlClient.MySqlCommand sqlCmd = new MySql.Data.MySqlClient.MySqlCommand(mySqlQuery, m_conn);            //sqlCmd.ExecuteNonQuery();            System.Threading.Thread.Sleep(1000);            toolStripProgressBar1.Value = 0;        }        private void toolStripButton1_Click(object sender, EventArgs e)        {            Process.Start("Universal.exe");        }        private void toolStripSplitButton1_Click(object sender, EventArgs e)        {            Application.Exit();        }    }}



    car quand je fait 

    string MySQLCmd = "INSERT INTO compte (id, login, mdp) VALUES (NULL, 'monpseudotest', 'monmdptest');";// On associe cette requête à la propriété SelectCommand du MySqlDataAdapterMyAdapter.SelectCommand = new MySqlCommand(MySQLCmd, Connection);



    Il ne se passe rien, il ne fait rien à ma BDD. Où est l’erreur?

    le lien vers l'erreur en image: http://desmond.imageshack.us/Himg713/scaled.php?server=713&filename=erreurc.jpg&res=landing

    ----------------------------------------------------------

    2ème question :     Quand j'utilise "SELECT * FROM compte WHERE login...", je l’affiche dans un dataGrid, tout s'affiche mais par contre je n'arrive pas à stocker le contenu de mes champs dans une variable, qui peut m'aider?

    • Modifié Micrøbe mercredi 25 juillet 2012 15:17 2ème question...
    lundi 23 juillet 2012 17:39

Toutes les réponses

  • Bonjour,

    Le champ id de votre table compte, ne serait-il pas la clef de la table ? si c'est le cas, vous ne devriez pas tenter d'y insérer NULL. Un clef primaire doit toujours être remplie. A vous de voir comment vous la remplissez (Autoincrémentation ou autre).

    lundi 23 juillet 2012 18:14
  • Bonjour,

    Si votre clef primaire est auto incrémentée, ne mettez pas le paramètre null dans votre requête Insert.

    Voici un exemple


    fred on youTube
    PHP MySQL Web Site Creator
    fred

    mardi 24 juillet 2012 06:47
  • Merci, pour le lien et pour vos réponses, j'ai réussis à faire marcher mon script mais le problème c'est que maintenant quand j'utilise "SELECT * FROM compte WHERE login...", je l’affiche dans un dataGrid, tout s'affiche mais par contre je n'arrive pas à stocker le contenu de mes champs dans une variable, qui peut m'aider?
    mercredi 25 juillet 2012 15:14
  • Bonjour,

    Inspirez vous de l'exemple en créant une requête de ce style:

    //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();
            
            //Read the data and store them in the list
            while (dataReader.Read())
            {
                list[0].Add(dataReader["id"] + "");
                list[1].Add(dataReader["name"] + "");
                list[2].Add(dataReader["age"] + "");
            }
    
            //close Data Reader
            dataReader.Close();
    
            //close Connection
            this.CloseConnection();
    
            //return list to be displayed
            return list;
        }


    fred on youTube
    PHP MySQL Web Site Creator
    fred

    mercredi 25 juillet 2012 16:21
  • ça ne marche pas mieux! :(
    jeudi 26 juillet 2012 15:34
  • Bonjour, pas clair. Concrètement quel est le problème que vous avez avec le code donné par fred75 ? Ou vous voulez faire quoi ?

    Vous pouvez :
    - utiliser Me.dataGridView1.Rows[1].Cells[0].Value pour récupérer une valeur dans votre contrôle (et l'affecter à une variable).

    Il peut être plus simple de charger les données dans un DataSet/DataTable ce qui vous permet de garder les infos sous le coude pur pouvoir les modifier et de pouvoir ensuite facilement retransmettre les modifications faits dans ce DataTable au travers de la DataGridView ou par programmation faciliment. Cf http://msdn.microsoft.com/fr-fr/library/system.windows.forms.datagridview.datasource.aspx (pour SQL Server mais même pirncipe pour MySQL).

    Le DataTable est une espèce de "cache" qui vous permet de charger les données, de les modifier localement par programmation ou au travers d'une interface graphique puis de renvoyer les modifs vers la base en une seule fois quand vous avez fini les différentes modifications...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    jeudi 26 juillet 2012 16:29
    Modérateur
  • Bonjour,

    Pouvez-vous nous montrer le code qui plante avec l'erreur ?


    fred on youTube
    PHP MySQL Web Site Creator
    fred

    jeudi 26 juillet 2012 21:17
  • Il n'y a pas d'erreur, quand après je fait un message box show qui affiche le contenu de la variable, il n'affiche rien, en gros la variable est vide!

    voici mon code:

    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using MySql.Data.MySqlClient;
    
    namespace TestMySQL
    {
    	/// <summary>
    	/// Description résumée de Form1.
    	/// </summary>
    	public class Form1 : System.Windows.Forms.Form
    	{
    		private System.Windows.Forms.TextBox tbhote;
    		private System.Windows.Forms.TextBox tblogin;
    		private System.Windows.Forms.Button btconnect;
            private System.Windows.Forms.TextBox tbbase;
    		private System.Windows.Forms.TextBox tbpwd;
    		/// <summary>
    		/// Variable nécessaire au concepteur.
    		/// </summary>
    		private System.ComponentModel.Container components = null;
    
    		private MySqlConnection Connection = new MySqlConnection();
    		private MySqlDataAdapter MyAdapter = new MySqlDataAdapter();
            private GroupBox groupBox1;
            private TextBox MDP;
            private TextBox LOGIN;
            private DataGridView dataGrid1;
    		private DataSet ds = new DataSet();
    
    		public Form1()
    		{
    			//
    			// Requis pour la prise en charge du Concepteur Windows Forms
    			//
    			InitializeComponent();
    
    			//
    			// TODO : ajoutez le code du constructeur après l'appel à InitializeComponent
    			//
    		}
    
    		/// <summary>
    		/// Nettoyage des ressources utilisées.
    		/// </summary>
    		protected override void Dispose( bool disposing )
    		{
    			if( disposing )
    			{
    				if (components != null) 
    				{
    					components.Dispose();
    				}
    			}
    			base.Dispose( disposing );
    		}
    
    		#region Code généré par le Concepteur Windows Form
    		/// <summary>
    		/// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
    		/// le contenu de cette méthode avec l'éditeur de code.
    		/// </summary>
    		private void InitializeComponent()
    		{
                System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
                System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
                this.tbhote = new System.Windows.Forms.TextBox();
                this.tblogin = new System.Windows.Forms.TextBox();
                this.tbpwd = new System.Windows.Forms.TextBox();
                this.btconnect = new System.Windows.Forms.Button();
                this.tbbase = new System.Windows.Forms.TextBox();
                this.groupBox1 = new System.Windows.Forms.GroupBox();
                this.MDP = new System.Windows.Forms.TextBox();
                this.LOGIN = new System.Windows.Forms.TextBox();
                this.dataGrid1 = new System.Windows.Forms.DataGridView();
                this.groupBox1.SuspendLayout();
                ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
                this.SuspendLayout();
                // 
                // tbhote
                // 
                this.tbhote.Location = new System.Drawing.Point(24, 16);
                this.tbhote.Name = "tbhote";
                this.tbhote.Size = new System.Drawing.Size(100, 20);
                this.tbhote.TabIndex = 0;
                this.tbhote.Text = "mon hote";
                this.tbhote.TextChanged += new System.EventHandler(this.tbhote_TextChanged);
                // 
                // tblogin
                // 
                this.tblogin.Location = new System.Drawing.Point(256, 16);
                this.tblogin.Name = "tblogin";
                this.tblogin.Size = new System.Drawing.Size(100, 20);
                this.tblogin.TabIndex = 1;
                this.tblogin.Text = "mon login";
                // 
                // tbpwd
                // 
                this.tbpwd.Location = new System.Drawing.Point(376, 16);
                this.tbpwd.Name = "tbpwd";
                this.tbpwd.PasswordChar = '*';
                this.tbpwd.Size = new System.Drawing.Size(100, 20);
                this.tbpwd.TabIndex = 2;
                this.tbpwd.Text = "mon mdp";
                // 
                // btconnect
                // 
                this.btconnect.Location = new System.Drawing.Point(496, 16);
                this.btconnect.Name = "btconnect";
                this.btconnect.Size = new System.Drawing.Size(75, 23);
                this.btconnect.TabIndex = 3;
                this.btconnect.Text = "Connexion";
                this.btconnect.Click += new System.EventHandler(this.btconnect_Click);
                // 
                // tbbase
                // 
                this.tbbase.Location = new System.Drawing.Point(144, 16);
                this.tbbase.Name = "tbbase";
                this.tbbase.Size = new System.Drawing.Size(100, 20);
                this.tbbase.TabIndex = 4;
                this.tbbase.Text = "mon login";
                // 
                // groupBox1
                // 
                this.groupBox1.Controls.Add(this.dataGrid1);
                this.groupBox1.Location = new System.Drawing.Point(24, 81);
                this.groupBox1.Name = "groupBox1";
                this.groupBox1.Size = new System.Drawing.Size(518, 161);
                this.groupBox1.TabIndex = 5;
                this.groupBox1.TabStop = false;
                this.groupBox1.Text = "groupBox1";
                // 
                // MDP
                // 
                this.MDP.Location = new System.Drawing.Point(333, 42);
                this.MDP.Name = "MDP";
                this.MDP.Size = new System.Drawing.Size(143, 20);
                this.MDP.TabIndex = 6;
                // 
                // LOGIN
                // 
                this.LOGIN.Location = new System.Drawing.Point(185, 42);
                this.LOGIN.Name = "LOGIN";
                this.LOGIN.Size = new System.Drawing.Size(142, 20);
                this.LOGIN.TabIndex = 7;
                // 
                // dataGrid1
                // 
                this.dataGrid1.AllowUserToAddRows = false;
                dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.BottomLeft;
                dataGridViewCellStyle1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
                dataGridViewCellStyle1.NullValue = null;
                this.dataGrid1.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1;
                this.dataGrid1.BackgroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128)))));
                this.dataGrid1.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.SingleVertical;
                this.dataGrid1.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single;
                dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
                dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Control;
                dataGridViewCellStyle2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.WindowText;
                dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
                dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
                dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
                this.dataGrid1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2;
                this.dataGrid1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
                this.dataGrid1.Dock = System.Windows.Forms.DockStyle.Fill;
                this.dataGrid1.Location = new System.Drawing.Point(3, 16);
                this.dataGrid1.Name = "dataGrid1";
                this.dataGrid1.Size = new System.Drawing.Size(512, 142);
                this.dataGrid1.TabIndex = 0;
                // 
                // Form1
                // 
                this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
                this.ClientSize = new System.Drawing.Size(600, 266);
                this.Controls.Add(this.LOGIN);
                this.Controls.Add(this.MDP);
                this.Controls.Add(this.groupBox1);
                this.Controls.Add(this.tbbase);
                this.Controls.Add(this.btconnect);
                this.Controls.Add(this.tbpwd);
                this.Controls.Add(this.tblogin);
                this.Controls.Add(this.tbhote);
                this.Name = "Form1";
                this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
                this.Text = "MySQL et .NET";
                this.groupBox1.ResumeLayout(false);
                ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
                this.ResumeLayout(false);
                this.PerformLayout();
    
    		}
    		#endregion
    
    		/// <summary>
    		/// Point d'entrée principal de l'application.
    		/// </summary>
    		[STAThread]
    		static void Main() 
    		{
    			Application.Run(new Form1());
    		}
    
    		private void btconnect_Click(object sender, System.EventArgs e)
    		{
    			string ConnnectionStr = String.Empty;
    
    			if ( (tbhote.Text.Length == 0) || (tbbase.Text.Length == 0) || (tblogin.Text.Length == 0) )
    			{
    				MessageBox.Show("Erreur, les champs Hôte, Base et Login doivent être remplis", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
    			}
    			else
    			{
    				// On définit la chaine de connexion
    				ConnnectionStr = "Database=" + tbbase.Text + ";Data Source=" + tbhote.Text + ";User Id=" + tblogin.Text + ";Password=" + tbpwd.Text;
    			}
    
    			Connection.ConnectionString = ConnnectionStr;
    
    			try
    			{
    				// On ouvre la connexion
    				Connection.Open();
    
    				// On définit la requête SELECT à exécuter
                    string MySQLCmd = "SELECT * FROM compte WHERE login = '" + LOGIN.Text + "' && mdp = '" + MDP.Text + "'";
    				// On associe cette requête à la propriété SelectCommand du MySqlDataAdapter
    				MyAdapter.SelectCommand = new MySqlCommand(MySQLCmd, Connection);
    
    				// On remplit le dataset avec le résultat de la commande SELECT
    				MyAdapter.Fill(ds);
    
    				// On affiche le datagrid
    				dataGrid1.DataSource = ds.Tables[0];
    				dataGrid1.Refresh();
    
    				// On ferme la connexion le plus tôt possible
    				Connection.Close();
                    //int mdp_verif;
    
    
    
                    //foreach (System.Data.DataRow row in dataGrid1.Rows)
                    //{
                    //    mdp_verif = (int)row[2];
                    //    MessageBox.Show("mdp = " + mdp_verif + "");
                    //}
    			}
    			catch(MySqlException Ex)
    			{
    				MessageBox.Show("Erreur SQL:\n" + Ex.Message,  "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
    			}
    		}
    
            private void tbhote_TextChanged(object sender, EventArgs e)
            {
    
            }
    	}
    }

    Et je ne sais pas comment insérer correctement le code que fred75 m'a donné.

    //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();
            
            //Read the data and store them in the list
            while (dataReader.Read())
            {
                list[0].Add(dataReader["id"] + "");
                list[1].Add(dataReader["name"] + "");
                list[2].Add(dataReader["age"] + "");
            }
    
            //close Data Reader
            dataReader.Close();
    
            //close Connection
            this.CloseConnection();
    
            //return list to be displayed
            return list;
        }

    et puis il souligne le "this" en rouge, il faut une DLL spéciale?


    • Modifié Micrøbe vendredi 27 juillet 2012 13:52
    vendredi 27 juillet 2012 13:51