SqlDataReader.Read Метод

Определение

Перемещает SqlDataReader к следующей записи.Advances the SqlDataReader to the next record.

public:
 virtual bool Read();
public bool Read ();
abstract member Read : unit -> bool
override this.Read : unit -> bool
Public Function Read () As Boolean

Возвраты

Значение true, если имеются другие строки; в противном случае — значение false.true if there are more rows; otherwise false.

Реализации

Исключения

SQL Server вернул ошибку во время выполнения текста команды.SQL Server returned an error while executing the command text.

Примеры

В следующем примере создается SqlConnection, SqlCommandи SqlDataReader.The following example creates a SqlConnection, a SqlCommand, and a SqlDataReader. Пример считывает данные, записывая их в окно консоли.The example reads through the data, writing it out to the console window. Затем код закрывает SqlDataReader.The code then closes the SqlDataReader. SqlConnection автоматически закрывается в конце блока кода using.The SqlConnection is closed automatically at the end of the using code block.

using System;
using System.Data;
using System.Data.SqlClient;


class Program
{
    static void Main()
    {
        string str = "Data Source=(local);Initial Catalog=Northwind;"
            + "Integrated Security=SSPI";
        ReadOrderData(str);
    }

    private static void ReadOrderData(string connectionString)
    {
        string queryString =
            "SELECT OrderID, CustomerID FROM dbo.Orders;";

        using (SqlConnection connection =
                   new SqlConnection(connectionString))
        {
            SqlCommand command =
                new SqlCommand(queryString, connection);
            connection.Open();

            SqlDataReader reader = command.ExecuteReader();

            // Call Read before accessing data.
            while (reader.Read())
            {
                ReadSingleRow((IDataRecord)reader);
            }

            // Call Close when done reading.
            reader.Close();
        }
    }

    private static void ReadSingleRow(IDataRecord record)
    {
        Console.WriteLine(String.Format("{0}, {1}", record[0], record[1]));
    }

}
Option Explicit On
Option Strict On

Imports System.Data
Imports System.Data.SqlClient

Module Module1

    Sub Main()
        Dim str As String = "Data Source=(local);Initial Catalog=Northwind;" _
       & "Integrated Security=SSPI;"
        ReadOrderData(str)
    End Sub

    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()
                ReadSingleRow(CType(reader, IDataRecord))
            End While

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

    Private Sub ReadSingleRow(ByVal record As IDataRecord)
       Console.WriteLine(String.Format("{0}, {1}", record(0), record(1)))

    End Sub

End Module

Комментарии

Расположение SqlDataReader по умолчанию находится перед первой записью.The default position of the SqlDataReader is before the first record. Поэтому необходимо вызвать Read, чтобы начать доступ к любым данным.Therefore, you must call Read to begin accessing any data.

В каждый момент времени может быть открыто только одно SqlDataReader для каждого связанного SqlConnection, и любая попытка открыть другой приведет к сбою, пока не будет закрыт первый из них.Only one SqlDataReader per associated SqlConnection may be open at a time, and any attempt to open another will fail until the first one is closed. Аналогично, хотя SqlDataReader используется, связанная SqlConnection занята его обслуживанием до вызова Close.Similarly, while the SqlDataReader is being used, the associated SqlConnection is busy serving it until you call Close.

Применяется к

Дополнительно