1

此代码将给出错误

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

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

4

1 回答 1

2

阅读器被设计为实际从数据库中读取结果,然后在使用后关闭,是ADO.NET中最低级别的数据库访问。

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

于 2015-01-24T03:53:22.160 回答