Pokud product_price
sloupec není typu TEXT
v MySQL, Reader.GetString(0)
bude (v závislosti na tom, jak byla čtečka implementována Oracle) vyvolá výjimku nebo vrátí prázdný řetězec. Myslím, že k tomu druhému dochází.
Načtení hodnoty pomocí DataReader
vyžaduje, abyste znali datový typ. Nemůžete jednoduše přečíst řetězec pro každý typ pole. Pokud je například pole v databázi celé číslo, musíte použít GetInt32(...)
. Pokud je to DateTime
použijte GetDateTime(...)
. Pomocí GetString
v DateTime
pole nebude fungovat.
UPRAVIT
Tento dotaz bych napsal takto:
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();
}
}
}