Mysql
 sql >> Database >  >> RDS >> Mysql

MySql Seleziona dove e C#

Se il product_price la colonna non è di tipo TEXT in MySQL, il Reader.GetString(0) (a seconda di come il lettore è stato implementato da Oracle) genererà un'eccezione o restituirà una stringa vuota. Penso che quest'ultimo stia accadendo.

Recupero del valore tramite un DataReader richiede di conoscere il tipo di dati. Non puoi semplicemente leggere una stringa per ogni tipo di campo. Ad esempio, se il campo nel database è un intero, è necessario utilizzare GetInt32(...) . Se è un DateTime usa GetDateTime(...) . Usando GetString su un DateTime il campo non funzionerà.

MODIFICA
Ecco come scriverei questa query:

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