Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySql Sélectionnez Où et C#

Si le product_price la colonne n'est pas de type TEXT dans MySQL, le Reader.GetString(0) (selon la façon dont le lecteur a été implémenté par Oracle) lancera une exception ou renverra une chaîne vide. Je pense que ce dernier se produit.

Récupération de la valeur via un DataReader nécessite que vous connaissiez le type de données. Vous ne pouvez pas simplement lire une chaîne pour chaque type de champ. Par exemple, si le champ de la base de données est un entier, vous devez utiliser GetInt32(...) . S'il s'agit d'un DateTime utilisez GetDateTime(...) . Utilisation de GetString sur un DateTime le champ ne fonctionnera pas.

MODIFIER
Voici comment j'écrirais cette requête :

using (MySqlConnection connection = new MySqlConnection(...))
{
    connection.Open();
    using (MySqlCommand cmd = new MySqlCommand("select product_price from product where product_name='@pname';", connection))
    {
        cmd.Parameters.AddWithValue("@pname", x);
        using (MySqlDataReader reader = cmd.ExecuteReader())
        {
            StringBuilder sb = new StringBuilder();
            while (reader.Read())
                sb.Append(reader.GetInt32(0).ToString());

            Price_label.Content = sb.ToString();
        }
    }
}