①SqlDataAdapter类与SqlDataReader类在MSDN中的定义

首先说说SqlDataAdapter类在MSDN中的解释

SqlDataAdapter类:表示用于填充DataSet和更新SQL Server数据库的一组数据命令和一个数据库连接。无法继承此类。

SqlDataAdapter是DataSet和Sql Server之间的桥接器,用于检索和保存数据。SqlDataAdapter通过对数据源使用恰当的Transact-SQL语句映射Fill(它可更改DataSet中的数据以匹配数据源中的数据)和Update(它可更改数据源中的数据以匹配DataSet中的数据)来提供这一桥接。

SqlDataAdapter填充DataSet时,它为返回的数据创造必需的表和列(如果这些表和列尚不存在)。但是,除非MissingSchemaAction属性设置为AddWithKey否则这个隐式创建的架构中不包含主键信息。也可以使用FillSchemaSqlDataAdapter创建DataSet的架构,并在用数据填充它之前就将主键信息包括进去。

示例

下面的示例使用SqlCommand、SqlDataAdapter和SqlConnection从数据库中选择记录,并用选定的行填充DataSet。然后返回已填充的DataSet。为完成此任务,向该方法传递一个已初始化的DataSet、一个连接字符串和一个查询字符串,后者是一个Transact-SQL Select语句。

Public Function SelectRows( _
    ByVal dataSet As DataSet, ByVal connectionString As String, _
    ByVal queryString As String) As DataSet

        Using connection As New SqlConnection(connectionString)
            Dim adapter As New SqlDataAdapter()    '定义一个SqlDataAdapter对象
            adapter.SelectCommand = New SqlCommand( _
                queryString, connection) '获取或设置一个Transact-SQL语句或存储过程,用于在数据源中选择记录。
            adapter.Fill(dataSet) '添加或刷新行
            Return dataSet
        End Using
    End Function



接着说说SqlDataReader类在MSDN中的解释

SqlDataReader类提供一种从SQL Server数据库读取行的只进流的方式。无法继承此类。

若要创建SqlDataReader,必须调用SqlCommand对象的ExecuteReader方法,而不要直接使用构造函数。

在使用SqlDataReader时,关联的SqlConnection正忙于为SqlDataReader服务,对SqlConnection无法执行任何其他操作,只能将其关闭。除非调用SqlDataReader的Close方法,否则会一直处于此状态。例如,在调用Close之前,无法检索出参数。

SqlDataReader的用户可能会看到在读取数据时另一进程或线程对结果集所做的更改。但是,确切的行为与执行时间有关。

SqlDataReader关闭后,只能调用IsClosed和RecordsAffected属性。尽管当SqlDataReader存在时刻访问RecordsAffected属性,但是请始终在返回RecordsAffected的值之前调用Close,以保证返回精确的值。

注意

为了获得最佳性能,SqlDataReader会避免创建不必要的对象或复制不必要的数据。因此,对GetValue等方法的多次调用将返回对相同对象的引用。如果正在修改由GetValue等方法返回的对象的基础值,请使用警告。

示例

下面的示例创建一个SqlConnection、一个SqlCommand和一个SqlDataReader。该示例读取全部数据,并将这些数据写到控制台窗口。随后此代码关闭SqlDataReader。SqlConnection在using代码块的结尾处自动关闭。

Private Sub ReadOrderData(ByVal connectionString As String)
    Dim queryString As String = _
        "SELECT OrderID, CustomerID FROM dbo.Orders;"

    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)
        connection.Open()

        Dim reader As SqlDataReader = command.ExecuteReader()

        ' Call Read before accessing data.
        While reader.Read()
            Console.WriteLine(String.Format("{0}, {1}", _
                reader(0), reader(1)))
        End While

        ' Call Close when done reading.
        reader.Close()
    End Using
End Sub




你可能感兴趣的:(Adapter)