Member 8583441 Ответов: 1

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


Я использую Visual Studio 2015 Enterprise edition для asp.net проект, в котором я получаю ошибку "
Invalid attempt to read when no data is present
"

На самом деле SqlDataReader выполняет команду но я получаю эту ошибку может ли кто нибудь объяснить мне где это неправильно

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

con = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
if (con.State == ConnectionState.Closed)
    con.Open();
string str = "select RoleName from tblRoles";

cmd = new SqlCommand(str, con);
sdr = cmd.ExecuteReader();

string roleName = sdr["RoleName"].ToString();


Я получаю ошибку в последней строке, говоря: "недопустимая попытка чтения, когда нет данных".

Member 8583441

Я пробовал string roleName = sdr.GetValue(1).ToString(); но бесполезно

1 Ответов

Рейтинг:
5

OriginalGriff

Чтобы использовать DataReader, вы должны сказать ему, чтобы он читал каждую строку за один раз:

using (SqlConnection con = new SqlConnection(strConnect))
    {
    con.Open();
    using (SqlCommand cmd = new SqlCommand("SELECT RoleName FROM tblRoles", con))
        {
        using (SqlDataReader reader = cmd.ExecuteReader())
            {
            while (reader.Read())
                {
                string roleName = (string) reader["RoleName"];
                Console.WriteLine(roleName);
                }
            }
        }
    }


Member 8583441

Большое вам спасибо сэр

OriginalGriff

Всегда пожалуйста!