Oracle
 sql >> Base de données >  >> RDS >> Oracle

Erreur avec OracleDataReader. Erreur :opération non valide. La connexion est fermée

Vous devez ouvrir la connexion et vous devez également utiliser les paramètres sql. J'espère que c'est la bonne syntaxe oracle car je ne peux pas la tester :

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

Notez que j'ai utilisé le using - déclaration pour s'assurer que toutes les ressources non gérées sont éliminées dès que possible. Il ferme également les connexions (même en cas d'erreur).

Modifier  :Puisque vous ne sélectionnez qu'une seule valeur, je suggère d'utiliser 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();
    }
}