Share via


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 从范围中排除 nullnull 引用(在 Visual Basic 中为 Nothing) 值。
Prefix 指定其中的索引值从 startData 值开始的范围。在使用 Prefix 选项时,必须将 endData 设置为 nullnull 引用(在 Visual Basic 中为 Nothing)。
Match 指定其中的索引值与 startData 值相匹配的范围。在使用 Match 选项时,必须将 endData 设置为 nullnull 引用(在 Visual Basic 中为 Nothing)。
Default 相当于同时设置 InclusiveStart 和 InclusiveEnd 标志。

注释

如果您指定 Match 或 Prefix 选项,则 endData 值必须为 nullnull 引用(在 Visual Basic 中为 Nothing)。

不能合并 Match 和 ExcludeNulls 选项。

示例

在此示例中,在调用 SetRange 方法时,对索引执行的 Seek 操作的范围选项被指定为 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 命名空间