rashmi singhai Ответов: 1

Недопустимая попытка вызова read при закрытом считывателе.


общественного недействительными метода GetData()
{


строка str = " выберите адрес, компанию от поставщика, где id=1";



SqlDataReader dr= DB. ExecuteReader(str);


если (dr. Read())
{

txtAddress.Text = dr ["адрес"].Метод toString();

txtCompany.Text = dr ["компания"].Метод toString();


др.Рядом();


}
}
и я нахожу эту ошибку
Недопустимая попытка вызова Read при закрытом считывателе.

Что я уже пробовал:

Недопустимая попытка вызова Read при закрытом считывателе.

ZurdoDev

Какая строка кода вызывает ошибку?

Richard Deeming

DB.ExecuteReader это не встроенная функция. Это то, что написали вы или кто-то из ваших коллег. Мы не можем видеть источник этой функции, поэтому мы не можем сказать вам, что с ней не так.

Основываясь на том, что мы мочь видите ли, я могу вам сказать, что DB класс выглядит так, как будто он, вероятно, поощряет написание кода, уязвимого для SQL-инъекция[^].

Karthik_Mahalingam

опубликуйте код для DB. ExecuteReader(
я думаю,что вы должны исправить это.

Michael_Davies

Используйте dr.HasRows, чтобы определить, что есть данные для чтения.

если (dr. HasRows())
{
...
}

1 Ответов

Рейтинг:
2

Patrice T

Используйте отладчик, чтобы увидеть, где возникает ошибка.

Цитата:
Недопустимая попытка вызова Read при закрытом считывателе.

Из сообщения об ошибке вы вызываете
dr.Read()
но читатель не открывается.


Отладчик позволяет вам следить за выполнением строка за строкой, проверять переменные, и вы увидите, что есть точка, в которой он перестает делать то, что вы ожидаете.
Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]