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();
}
}
}