Condividi tramite


Enumerazione DbRangeOptions

Specifica le opzioni utilizzate dal metodo SetRange per specificare l'intervallo di indici in cui eseguire la ricerca.

Questa enumerazione dispone di un attributo FlagsAttribute che consente una combinazione bit per bit dei relativi valori dei membri.

Spazio dei nomi  System.Data.SqlServerCe
Assembly:  System.Data.SqlServerCe (in System.Data.SqlServerCe.dll)

Sintassi

'Dichiarazione
<FlagsAttribute> _
Public Enumeration DbRangeOptions
'Utilizzo
Dim instance As DbRangeOptions
[FlagsAttribute]
public enum DbRangeOptions
[FlagsAttribute]
public enum class DbRangeOptions
[<FlagsAttribute>]
type DbRangeOptions
public enum DbRangeOptions

Membri

Nome membro Descrizione
InclusiveStart Include il valore startData nell'intervallo.
InclusiveEnd Include il valore endData nell'intervallo.
ExclusiveStart Esclude il valore startData dall'intervallo.
ExclusiveEnd Esclude il valore endData dall'intervallo.
ExcludeNulls Esclude i valori Null dall'intervallo.
Prefix Specifica un intervallo in cui i valori di indice iniziano con il valore di startData. Quando si utilizza l'opzione Prefix, il valore endData deve essere impostato su Null.
Match Specifica un intervallo in cui i valori di indice corrispondono al valore di startData. Quando si utilizza l'opzione Match, il valore endData deve essere impostato su Null.
Default Equivale a impostare entrambi i flag InclusiveStart e InclusiveEnd.

Osservazioni

Se si specifica l'opzione Match o Prefix, il valore di endData deve essere Null.

Non è possibile combinare le opzioni Match e ExcludeNulls.

Esempi

In questo esempio le opzioni relative all'intervallo per l'esecuzione del metodo Seek sull'indice vengono specificate come InclusiveStart o InclusiveEnd quando si esegue la chiamata al metodo 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);
        }

Vedere anche

Riferimento

Spazio dei nomi System.Data.SqlServerCe