SQL Server Compact не поддерживает вызовы свойства HasRows, если нижележащий курсор не прокручивается ». - PullRequest
4 голосов
/ 29 сентября 2011

Что это на самом деле означает?

Я перебираю некоторый код, и когда я смотрю на свойства моего устройства чтения данных в окне locals в vs2010, DR.HasRows показывает ошибку:

HasRows '(DR).HasRows' threw an exception of   type 'System.InvalidOperationException'  bool {System.InvalidOperationException}

base    {"SQL Server Compact does not support calls to HasRows property if the underlying cursor is not scrollable."}   System.SystemException {System.InvalidOperationException}

Что такое курсор и как мне сделать его прокручиваемым?:)

Ответы [ 3 ]

9 голосов
/ 15 октября 2011

Я получил эту ошибку раньше, и это решение:

bool hasRow = DR.Read();
if(hasRow)
 {
    //TODO
 }
1 голос
/ 15 февраля 2013

Просто используйте DR.read () в цикле while.Если ваш запрос установлен правильно, вы знаете, что он будет выполняться только один раз, но если вы хотите контролировать его еще больше, просто используйте break после чтения данных youd:

            while (DRder.Read())
            {      
               //get your date from the reader.              

               //optional break, though it will do two things,
               //1. ensure one record is returned
               //2. Eliminate the need for the while loop to check again.
                break; 

            }
1 голос
/ 28 июля 2012

Лучшим решением было бы заставить набор результатов прокручиваться. Сделай так:

SqlCeDataReader dr = command.ExecuteResultSet(ResultSetOptions.Scrollable);

Читайте о том, какие типы курсоров здесь

...