Compartilhar via


Enumeração DbRangeOptions

Especifica as opções usadas pelo método SetRange ao especificar o intervalo do índice que deve ser buscado.

Esta enumeração tem um atributo FlagsAttribute que permite uma combinação bit a bit de seus valores de membro.

Namespace:  System.Data.SqlServerCe
Assembly:  System.Data.SqlServerCe (em System.Data.SqlServerCe.dll)

Sintaxe

'Declaração
<FlagsAttribute> _
Public Enumeration DbRangeOptions
'Uso
Dim instance As DbRangeOptions
[FlagsAttribute]
public enum DbRangeOptions
[FlagsAttribute]
public enum class DbRangeOptions
[<FlagsAttribute>]
type DbRangeOptions
public enum DbRangeOptions

Membros

Nome do membro Descrição
InclusiveStart Inclui o valor startData no intervalo.
InclusiveEnd Inclui o valor endData no intervalo.
ExclusiveStart Exclui o valor startData do intervalo.
ExclusiveEnd Exclui o valor endData do intervalo.
ExcludeNulls Exclui os valores nulluma referência nula (Nothing no Visual Basic) do intervalo.
Prefix Especifica um intervalo no qual os valores de índice começam com o valor de startData. Ao usar a opção Prefix, endData deve ser definido como nulluma referência nula (Nothing no Visual Basic).
Match Especifica um intervalo no qual os valores de índice correspondem ao valor de startData. Ao usar a opção Match, endData deve ser definido como nulluma referência nula (Nothing no Visual Basic).
Default Equivalente a configurar os sinalizadores InclusiveStart e InclusiveEnd.

Comentários

Se você especificar a opção Match ou Prefix, o valor de endData deverá ser nulluma referência nula (Nothing no Visual Basic).

Não é possível combinar as opções Match e ExcludeNulls.

Exemplos

Neste exemplo, as opções de intervalo da operação Seek no índice são especificadas como InclusiveStart ou InclusiveEnd na chamada ao método SetRange.

        Try
            Dim conn As New SqlCeConnection("Data Source = MyDatabase.sdf")
            conn.Open()

            Dim cmd As SqlCeCommand = conn.CreateCommand()
            cmd.CommandType = CommandType.TableDirect
            cmd.IndexName = "Orders_PK"
            cmd.CommandText = "Orders"

            ' We are interested in orders that match Order ID = 10020
            '
            cmd.SetRange(DbRangeOptions.Match, New Object() {10020}, Nothing)

            Dim reader As SqlCeDataReader = cmd.ExecuteReader(CommandBehavior.Default)

            While reader.Read()
                MessageBox.Show(String.Format("{0} ; {1}", reader("Order ID"), reader("Order Date")))
            End While

            ' Now we are interested in orders with Order ID between (10020, 10050)
            '
            cmd.SetRange(DbRangeOptions.InclusiveStart Or DbRangeOptions.InclusiveEnd, New Object() {10020}, New Object() {10050})

            reader = cmd.ExecuteReader(CommandBehavior.Default)

            ' Now seek to Order ID = 10045
            '
            Dim onRow As Boolean =  reader.Seek(DbSeekOptions.FirstEqual, New Object() {10045})

            ' Now ,the reader will return rows with Order ID >= 10045 <= 10050
            ' because the range was set to (10020, 10050)
            '
            If onRow Then
                While reader.Read()
                    MessageBox.Show(String.Format("{0} ; {1}", reader("Order ID"), reader("Order Date")))
                End While
            End If
        Catch e As Exception
            MessageBox.Show(e.Message)
        End Try
        try
        {
            SqlCeConnection conn = new SqlCeConnection("Data Source = MyDatabase.sdf");
            conn.Open();

            SqlCeCommand cmd = conn.CreateCommand();
            cmd.CommandType = CommandType.TableDirect;
            cmd.IndexName = "Orders_PK";
            cmd.CommandText = "Orders";

            // We are interested in orders that match Order ID = 10020
            //
            cmd.SetRange(DbRangeOptions.Match, new object[] { 10020 }, null);

            SqlCeDataReader reader = cmd.ExecuteReader(CommandBehavior.Default);

            for (int i = 1; reader.Read(); i++)
            {
                MessageBox.Show(String.Format("{0} ; {1}", reader["Order ID"], reader["Order Date"]));
            }

            // Now we are interested in orders with Order ID between (10020, 10050)
            //
            cmd.SetRange(DbRangeOptions.InclusiveStart | DbRangeOptions.InclusiveEnd,
                new object[] { 10020 }, new object[] { 10050 });

            reader = cmd.ExecuteReader(CommandBehavior.Default);

            // Now seek to Order ID = 10045
            //
            bool onRow = reader.Seek(DbSeekOptions.FirstEqual, new object[] { 10045 });

            // Now ,the reader will return rows with Order ID >= 10045 <= 10050
            // because the range was set to (10020, 10050)
            //
            if (onRow)
            {
                for (int i = 1; reader.Read(); i++)
                {
                    MessageBox.Show(String.Format("{0} ; {1}", reader["Order ID"], reader["Order Date"]));
                }
            }
        }
        catch (Exception e)
        {
            MessageBox.Show(e.Message);
        }

Consulte também

Referência

Namespace System.Data.SqlServerCe