Jeśli product_price
kolumna nie jest typu TEXT
w MySQL, Reader.GetString(0)
wyrzuci (w zależności od tego, w jaki sposób czytnik został zaimplementowany przez Oracle) wyjątek lub zwróci pusty ciąg. Myślę, że dzieje się to drugie.
Pobieranie wartości przez DataReader
wymaga znajomości typu danych. Nie możesz po prostu odczytać ciągu dla każdego typu pola. Na przykład, jeśli pole w bazie danych jest liczbą całkowitą, musisz użyć GetInt32(...)
. Jeśli jest to DateTime
użyj GetDateTime(...)
. Używanie GetString
w DateTime
pole nie działa.
EDYTUJ
Tak napisałbym to zapytanie:
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();
}
}
}