Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Fehler mit OracleDataReader. Fehler:Ungültiger Vorgang. Die Verbindung ist geschlossen

Sie sollten die Verbindung öffnen und auch SQL-Parameter verwenden. Hoffentlich ist das die richtige Oracle-Syntax, weil ich sie nicht testen kann:

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

Beachten Sie, dass ich den using verwendet habe -Anweisung, um sicherzustellen, dass alle nicht verwalteten Ressourcen so schnell wie möglich entsorgt werden. Es schließt auch Verbindungen (sogar im Fehlerfall).

Bearbeiten :Da Sie nur einen einzelnen Wert auswählen, schlage ich vor, ExecuteScalar zu verwenden :

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