2011-02-23 4 views
0

Je développe actuellement une application pour Windows en utilisant MySQL et C#. J'ai le code suivant:MySQL Query avec MySQLParameters en C#

private void cboCategories_SelectedIndexChanged(object sender, EventArgs e) 
      { 
       DatabaseWork dbase = new DatabaseWork(); 
       try 
       { 
        dbase.openConnection(); 
        string query = "SELECT * FROM budgetcategory WHERE [email protected] AND [email protected]"; 
        MySqlCommand cmd = new MySqlCommand("", dbase.conn); 

        cmd.CommandText = query; 
        cmd.Parameters.AddWithValue("@userID", userID); 
        cmd.Parameters.AddWithValue("@category", cboCategories.SelectedItem.ToString()); 

        MySqlDataReader reader = cmd.ExecuteReader(); 
        while (reader.Read()) 
        { 
         setCatId(reader.GetString("budc_category_id")); 
         Console.WriteLine("Category ID: " + getCatId()); 
        } 
       } 
       catch (MySqlException ex) 
       { 
        Console.WriteLine("Cat Error: " + ex.Message); 
       } 
       finally 
       { 
        dbase.closeConnection(); 
       } 
} 

Pour une raison quelconque quand je déboguer le code, il ne va jamais dans la boucle while comme si rien ne revenait jamais de la base de données. Mais je sais qu'il devrait y avoir quelque chose là-dedans.

Merci pour toute aide que vous pouvez fournir

Répondre

0

Juste essayer de vous aider à déboguer un peu:

Essayez de réduire ces trois lignes:

string query = "SELECT * FROM budgetcategory WHERE [email protected] AND [email protected]"; 
MySqlCommand cmd = new MySqlCommand("", dbase.conn); 
cmd.CommandText = query; 

juste:

string query = "SELECT * FROM budgetcategory WHERE [email protected] AND [email protected]"; 
MySqlCommand cmd = new MySqlCommand(query, dbase.conn); 

Maintenant, mettez un point d'arrêt sur les lignes qui ajoutent les paramètres, et assurez-vous que userID et surtout cboCategories.SelectedItem.ToString() ont les valeurs que vous attendez.

De plus, pouvez-vous confirmer qu'aucune exception n'est levée?

Si ce n'est pas le cas, lancez la requête, avec ces valeurs exactes directement dans la base de données et confirmez que quelque chose est retourné.

+0

Salut, merci pour vos suggestions. cboCategories revient avec la bonne valeur et aucune exception n'est levée. Ce qui est bizarre c'est que même si je code dur les valeurs des paramètres, ça ne va jamais dans la boucle while. De plus, si je n'utilise pas de paramètres et que je mets les variables directement dans la chaîne de requête, cela fonctionne très bien. C'est seulement les paramètres MySQL qui ne fonctionnent pas – Boardy