Почему OdbcDataReader требует живого соединения

Этот код выдаст ошибку

    Dim mysql As String = " Select roll_no,std_name from student"
    Dim cmd As New OdbcCommand(mysql, conn)
    conn.Open()
    Dim reader As OdbcDataReader = cmd.ExecuteReader
    conn.Close()
    If reader.HasRows = True Then

    End If

но это работает нормально

    Dim mysql As String = " Select roll_no,std_name from student"
    Dim cmd As New OdbcCommand(mysql, conn)
    conn.Open()
    Dim reader As OdbcDataReader = cmd.ExecuteReader
    If reader.HasRows = True Then

    End If
    conn.Close()

Почему для чтения данных из базы данных всегда требуется открытое соединение?

1 ответ

Решение

Считыватель предназначен для фактического чтения результатов из БД, а затем закрытия после использования и является самым низким уровнем доступа к БД в ADO.NET.

Я редко использую DataReader и предпочитаю метод DataAdapter.Fill для получения результатов и возврата набора данных / таблицы. За кулисами адаптер открывает накопитель данных и заполняет набор данных. https://msdn.microsoft.com/en-us/library/905keexk(v=vs.110).aspx

Другие вопросы по тегам