sql >> Base de Datos >  >> RDS >> Mysql

MySql Seleccione Dónde y C#

Si el product_price la columna no es del tipo TEXT en MySQL, el Reader.GetString(0) (dependiendo de cómo Oracle implementó el lector) arrojará una excepción o devolverá una cadena vacía. Creo que esto último está sucediendo.

Recuperando el valor a través de un DataReader requiere que conozca el tipo de datos. No puede simplemente leer una cadena para cada tipo de campo. Por ejemplo, si el campo en la base de datos es un número entero, debe usar GetInt32(...) . Si es un DateTime usa GetDateTime(...) . Usando GetString en un DateTime el campo no funcionará.

EDITAR
Así es como escribiría esta consulta:

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