Oracle
 sql >> база данни >  >> RDS >> Oracle

Грешка с OracleDataReader. Грешка:Невалидна операция. Връзката е затворена

Трябва да отворите връзката и да използвате sql-параметри. Надяваме се, че това е правилният синтаксис на оракул, защото не мога да го тествам:

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

Имайте предвид, че използвах using -изявление за гарантиране, че всички неуправлявани ресурси се изхвърлят възможно най-скоро. Освен това затваря връзки (дори при грешка).

Редактиране :Тъй като избирате само една стойност, предлагам да използвате 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();
    }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да активирате регистриране за SQL изрази, когато използвате JDBC

  2. Как да инсталирам пакета ROracle на Windows 7?

  3. Oracle, PDO_OCI срещу OCI8

  4. Групово вмъкване в базата данни на Oracle:Кое е по-добре:цикъл FOR Cursor или обикновен Select?

  5. Намалете 19 колони до 5 колони