Hvis product_price
kolonne er ikke af typen TEXT
i MySQL, Reader.GetString(0)
vil (afhængigt af hvordan læseren blev implementeret af Oracle) smide en undtagelse eller returnere en tom streng. Jeg vil tro, at det sidste sker.
Hentning af værdien gennem en DataReader
kræver, at du kender datatypen. Du kan ikke bare læse en streng for hver type felt. For eksempel, hvis feltet i databasen er et heltal, skal du bruge GetInt32(...)
. Hvis det er en DateTime
brug GetDateTime(...)
. Brug af GetString
på en DateTime
feltet virker ikke.
REDIGER
Sådan ville jeg skrive denne forespørgsel:
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();
}
}
}