Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySql Select Where und C#

Wenn der product_price Spalte ist nicht vom Typ TEXT in MySQL der Reader.GetString(0) wird (je nachdem, wie der Reader von Oracle implementiert wurde) eine Ausnahme auslösen oder einen leeren String zurückgeben. Ich würde denken, dass letzteres passiert.

Abrufen des Werts durch einen DataReader erfordert, dass Sie den Datentyp kennen. Man kann nicht einfach für jeden Feldtyp einen String auslesen. Wenn das Feld in der Datenbank beispielsweise eine Ganzzahl ist, müssen Sie GetInt32(...) verwenden . Wenn es sich um DateTime handelt Verwenden Sie GetDateTime(...) . Verwenden von GetString an einem DateTime Feld funktioniert nicht.

BEARBEITEN
So würde ich diese Abfrage schreiben:

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