sql >> Base de Datos >  >> RDS >> Oracle

Error con OracleDataReader. Error:operación no válida. la conexion esta cerrada

Debe abrir la conexión y también debe usar los parámetros sql. Espero que esta sea la sintaxis de Oracle correcta porque no puedo probarla:

using(var con = new OracleConnection("ConnectionString Here"))
using(var cmd = new OracleCommand("ADD YOUR INSERT/UPDATE/DELETE", con))
{
    con.Open();
    cmd.ExecuteNonQuery();
    using (var cm = new OracleCommand("select round(avg(rating),1)As AvgRating from rates where id_rec = @id", con))
    {
        cm.Parameters.AddWithValue("@id", id);
        using (var reader = cm.ExecuteReader())
        {
            if (reader.Read())
            {
                textBox5.Text = reader.GetInt16(0).ToString();
            }
        }
    }
}

Tenga en cuenta que he usado using -declaración para garantizar que todos los recursos no administrados se eliminen lo antes posible. También cierra conexiones (incluso en caso de error).

Editar :Dado que está seleccionando solo un valor, sugiero usar ExecuteScalar :

using (var cm = new OracleCommand("select round(avg(rating),1)As AvgRating from rates where id_rec = @id", con))
{
    cm.Parameters.AddWithValue("@id", id);
    object avgRating = cm.ExecuteScalar();
    if (!(avgRating is DBNull))
    {
        textBox5.Text = avgRating.ToString();
    }
}