Поделиться через


Перечисление DbRangeOptions

Задает параметры, которые будут использоваться методом SetRange при указании диапазона индекса, по которому будет производиться поиск.

Это перечисление имеет атрибут FlagsAttribute, допускающий побитовое сочетание значений его элементов.

Пространство имен:  System.Data.SqlServerCe
Сборка:  System.Data.SqlServerCe (в System.Data.SqlServerCe.dll)

Синтаксис

'Декларация
<FlagsAttribute> _
Public Enumeration DbRangeOptions
'Применение
Dim instance As DbRangeOptions
[FlagsAttribute]
public enum DbRangeOptions
[FlagsAttribute]
public enum class DbRangeOptions
[<FlagsAttribute>]
type DbRangeOptions
public enum DbRangeOptions

Элементы

Имя элемента Описание
InclusiveStart Включает в диапазон значение startData.
InclusiveEnd Включает в диапазон значение endData.
ExclusiveStart Исключает из диапазона значение startData.
ExclusiveEnd Исключает из диапазона значение endData.
ExcludeNulls Исключает из диапазона значения nullпустая ссылка (Nothing в Visual Basic).
Prefix Задает диапазон, в котором значения индекса начинаются со значения параметра startData. При использовании параметра Prefix параметр endData должен иметь значение nullпустая ссылка (Nothing в Visual Basic).
Match Задает диапазон, в котором значения индекса совпадают со значением параметра startData. При использовании параметра Match параметр endData должен иметь значение nullпустая ссылка (Nothing в Visual Basic).
Default То же самое, что одновременная установка флагов InclusiveStart и InclusiveEnd.

Замечания

Если задан параметр Match или Prefix, то свойство endData должно быть установлено в значение nullпустая ссылка (Nothing в Visual Basic).

Параметры Match и ExcludeNulls совмещать нельзя.

Примеры

В следующем примере для операции Seek над индексом при вызове метода SetRange указываются параметры диапазона InclusiveStart и InclusiveEnd.

        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);
        }

См. также

Справочник

Пространство имен System.Data.SqlServerCe