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 選項。

範例

在這個範例中,索引上 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 命名空間