2015-03-23 3 views
0

Я хочу прочитать данные из базы данных oracle и добавить эти данные в список. Но когда я запускаю приложение, я получаю «Недействительную операцию». Соединение закрыто. ошибка.Ошибка при чтении данных из базы данных с использованием DbDataReader

Это мой код:

public class NewOtherCompanyMapper 
{ 
    OtherCompany om; 
    private Database db; 
    private DbCommand cmd; 
    private DbConnection con; 

    public NewOtherCompanyMapper(OtherCompany om_temp) 
    { 
     om = om_temp; 
     db = DatabaseFactory.CreateDatabase("NDA_generator"); 
    } 

    public List<OtherCompany> getCompanyDetails() 
    { 
     List<OtherCompany> list = new List<OtherCompany>(); 
     OtherCompany oc = new OtherCompany(); 

     try 
     { 
      con = db.CreateConnection(); 
      con.Open(); 

      string query = "SELECT * FROM OtherCompanyData"; 
      cmd = db.GetSqlStringCommand(query); 
      DbDataReader reader = cmd.ExecuteReader(); 

      while (reader.Read()) 
      { 
       oc = new OtherCompany(reader["RegNumber"].ToString(), reader["ComName"].ToString(), reader["Country"].ToString(), reader["Address"].ToString(), reader["CoreBusi"].ToString()); 
       list.Add(oc); 
      } 

     } 

     catch (Exception ex) 
     { 
      throw ex; 
     } 
     return list; 
    } 
} 

Можете ли вы помочь мне решить эту проблему.

+0

_ «когда я запустить приложение я получаю«Недопустимый операцию»_ Может быть, вы могли бы быть более конкретными. Вы даже не вызываете 'getCompanyDetails'. –

+0

Вы отлаживали? какая строка дает ошибку? – btevfik

+0

Поскольку это вопрос ASP.NET, и вы используете настраиваемый класс диспетчера соединений, может быть, соединение является «статическим»? Тогда это что-то для вас: http://stackoverflow.com/questions/9705637/executereader-requires-an-open-and-available-connection-the-connections-curren –

ответ

0

Попробуйте заменить эту

cmd = db.GetSqlStringCommand(query); 

с этим:

cmd = con.CreateCommand(); 
cmd.CommandText = query; 
Смежные вопросы