为什么 OdbcDataReader 需要实时连接

Why OdbcDataReader requires a live connection

这段代码会报错

    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()

为什么 reader 需要始终打开连接才能从数据库读取数据?

reader是为了真正从DB中读取结果,用完后关闭,是ADO.NET中最低级别的DB访问。

我很少再使用 DataReader,更喜欢 DataAdapter.Fill 方法来检索结果和 return dataset/table。在幕后,适配器打开一个数据 reader 并填充数据集。 https://msdn.microsoft.com/en-us/library/905keexk(v=vs.110).aspx