2016-10-15 2 views
0

Исключение операции system.invalid недействительная попытка прочитать, когда данные отсутствуют после while loop Reader show Empty.Неверная попытка чтения, когда данные отсутствуют в Reader show empty

byte[] fingerprint() 
{ 
    OpenConnection(); 
    SqlCommand command = connection.CreateCommand(); 
    SqlDataReader Reader; 
    command.CommandText = "SELECT fp,name FROM fptable"; 
    Reader = command.ExecuteReader(); 
    // Reader= command.ExecuteReader(CommandBehavior.CloseConnection); 
    try 
    { 
     while (Reader.Read()) 
     { 
      Reader.GetValue(0); 
      String name = Reader.GetValue(1) as String; 
      byte[] temps = Reader.GetValue(0) as byte[]; 
      list.Add(temps); 
      names.Add(name); 
     } 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
    byte[] temp = Reader.GetValue(0) as byte[]; //**error at this point** 
    // byte[] temp = Reader["fp"] as byte[]; 
    // MakeReport(list.Count+""+names.Count); 
    return temp; 
} 
+1

Почему вы пытаетесь прочитать снова читателя в этот момент? В этот момент ваш код достиг конца данных, возвращаемых запросом (выход из цикла), поэтому это нормально, чтобы иметь эту ошибку. Нет данных для чтения .... – Steve

+0

Ваш читатель заканчивается в конце цикла while, с которым вы не можете читать –

ответ

1

Ваши данные уже получены и сохранены в списке. В цикле while Reader перечисляет на наборе результатов и переместился в индекс, где нет данных.

Используйте этот список (список и имена), чтобы продолжить работу над этими данными.

На боковой ноте - данные, которые вы получили, взяты из таблицы и связаны между собой, поэтому вы можете использовать словарь вместо списка или какого-либо другого сложного объекта.

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