Om product_price
kolumnen är inte av typen TEXT
i MySQL, Reader.GetString(0)
kommer (beroende på hur läsaren implementerades av Oracle) att kasta ett undantag eller returnera en tom sträng. Jag skulle tro att det senare händer.
Hämtar värdet genom en DataReader
kräver att du känner till datatypen. Du kan inte bara läsa en sträng för varje typ av fält. Till exempel, om fältet i databasen är ett heltal måste du använda GetInt32(...)
. Om det är en DateTime
använd GetDateTime(...)
. Använder GetString
på en DateTime
fältet fungerar inte.
REDIGERA
Så här skulle jag skriva den här frågan:
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();
}
}
}