2015-01-24 3 views
1

этот код будет давать ошибкуПочему 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() 

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

ответ

2

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

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