2012-10-17 2 views
2

Я создал программное обеспечение для чтения данных из Oracle DB, отправив его по SMS, но я хочу, чтобы datareader не читал, когда я нажимаю клавишу C на клавиатуре, но когда я это сделал, я получаю это сообщение об исключении :как остановить oracledatareader от чтения

Operation is not valid due to the current state of the object 

трассировки стека:

at Oracle.DataAccess.Client.OracleDataReader.Read() 
    at Test_SMS_AT_Command.Program.OnTimer(Object obj, EventArgs args) 

и это мой код:

oraCommand.ExecuteNonQuery(); 

       OracleDataAdapter oraDataAdapter = new OracleDataAdapter(oraCommand); 
       Oracle.DataAccess.Types.OracleRefCursor refCursor = (Oracle.DataAccess.Types.OracleRefCursor)oraParameter.Value; 
       OracleDataReader reader = refCursor.GetDataReader(); 
       while (reader.Read()) 
       { 
        if (cki.Key == ConsoleKey.C) 
        { 
         cancel();      

         if (reader != null) 
         { 
          reader.Close(); //Closed 
         } 

         break; 

        } 

        if (sms.sendSms(reader["MOBILE_NO"].ToString(), reader["TEXT"].ToString())) 
        { 
         Console.WriteLine("Message successfully sent to " + reader["MOBILE_NO"].ToString() + ": " + DateTime.Now); 
         setStatus(Convert.ToInt32(reader["GORANNET_SMS_ID"])); 
         writeToFile(reader["TEXT"] + " sent to " + reader["MOBILE_NO"] + " at: " + DateTime.Now); 
        } 
        else 
        { 
         Console.WriteLine("Message was not sent"); 
        } 
        System.Threading.Thread.Sleep(15000); 
       } 

Спасибо вы

ответ

0

Call reader.Close(); после того, как заявление ...

+0

Вы не видите соединение по объекту Command? –

+0

no Я не пропустил ничего, что читатель работает отлично, но я хочу, чтобы читатель не читал дальше, когда я нажимаю клавишу C на клавиатуре – danarj

Смежные вопросы