sudhakarthikeyan Ответов: 2

Как проверить считыватель данных на языке Си#


Select * from student


Rollno      Studname   Age    DOB            Address   Active    Status
   1          Ajay      6     12.10.2010      Chennai   A          Male
   2          Suresh    5     5.7.2011        Chennai   A          Male
   3          Priya     6     10.6.2010       Chennai   A         FeMale
   4          Revathy   5     8.9.2011        Chennai   A         FeMale



из приведенной выше таблицы я проверяю следующее

using (SqlConnection newCon = new SqlConnection(db.GetConnectionString))
            {
                SqlCommand newCmd = new SqlCommand(Select * from student)", newCon);
                newCmd.Parameters.Add()
                newCon.Open();
                SqlDataReader rdr = newCmd.ExecuteReader();
                rdr.Read();

                if(reader[6].ToString() == "Male");
                    {
                          //In that i am displaying Male Image
                    }
                 if(reader[6].Tostring() == "FeMale");
                    
                     {
                          //In that i am displaying FeMale Image
                     }
                   
           }



Когда я exeute приведенный выше код показывает ошибку следующим образом

Недопустимая попытка чтения при отсутствии данных.

Приведенная выше ошибка отображается в следующей строке следующим образом

if(reader[6].ToString() == "Male")


В чем ошибка в моем вышеприведенном коде? пожалуйста, помогите мне

я много пробовал, но показывает ошибку.

Patrice T

Какое слово вы не понимаете в сообщении об ошибке ?

Maciej Los

Не делайте репостов!
http://www.codeproject.com/Questions/1118317/Using-foreach-loop-get-data-and-save-into-excel-fi

2 Ответов

Рейтинг:
2

Maciej Los

Я бы предложил создать Словарь[^] объект для такой функциональности:

Dictionary <string, string> images = new Dictionary<string, string>();
images.Add("Male", "C:\Pictures\Male.jpg");
images.Add("FeMale", "C:\Pictures\FeMale.jpg");


Затем вы сможете просто назначить путь к изображению в зависимости от пола студента.
PictureBox1.Image = Image.FromFile(images[reader[6]]);


Для получения более подробной информации, пожалуйста, смотрите:
Настройка изображений во время выполнения (Windows Forms)[^]
Изображение.Метод FromFile (String) (System.Рисование)[^]


Рейтинг:
0

OriginalGriff

Вы читаете из DataReader, но не проверяете, что какие-либо строки возвращаются: поэтому, когда их нет, вы получаете ошибку, которая явно говорит вам именно об этом!
Начните с проверки возвращаемого значения:

if (rdr.Read();
   {
   if(reader[6].ToString() == "Male");
      {
   ...
И немедленная ошибка исчезнет.

Но ... код, который вы показываете, - это не тот код, который вы запускаете, потому что он не будет компилироваться:
SqlCommand newCmd = new SqlCommand(Select * from student)", newCon);

И я подозреваю, что ваш "реальный" код использует предложение WHERE, чтобы выбрать, для какого ученика возвращать информацию. И что предложение where не работает...так что строки не возвращаются.