Freigeben über


DbSeekOptions-Enumeration

Optionen, die angeben, wie die Seek-Methode in einem Index sucht.

Diese Enumeration verfügt über ein FlagsAttribute-Attribut, das die bitweise Kombination der Elementwerte zulässt.

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

Syntax

'Declaration
<FlagsAttribute> _
Public Enumeration DbSeekOptions
'Usage
Dim instance As DbSeekOptions
[FlagsAttribute]
public enum DbSeekOptions
[FlagsAttribute]
public enum class DbSeekOptions
[<FlagsAttribute>]
type DbSeekOptions
public enum DbSeekOptions

Elemente

Elementname Beschreibung
FirstEqual Wechselt in der Reihenfolge des Indexes zur ersten übereinstimmenden Zeile im Index.
LastEqual Wechselt in der Reihenfolge des Indexes zur letzten übereinstimmenden Zeile im Index.
AfterEqual Wechselt zur letzten übereinstimmenden Zeile im Index. Wechselt in der Reihenfolge des Index zur ersten Zeile nach dem Suchwert, die Werte enthält, wenn keine übereinstimmenden Zeilen vorhanden sind.
After Wechselt in der Reihenfolge des Indexes zur ersten Zeile nach dem Suchwert, die Werte enthält.
BeforeEqual Wechselt zur ersten übereinstimmenden Zeile im Index. Wechselt in der Reihenfolge des Index zur letzten Zeile vor dem Suchwert, die Werte enthält, wenn keine übereinstimmenden Zeilen vorhanden sind.
Before Wechselt in der Reihenfolge des Indexes zur letzten Zeile vor dem Suchwert, die Werte enthält.

Beispiele

In diesem Beispiel wird die Option FirstEqual für den Seek-Vorgang im Index angegeben.

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

Siehe auch

Verweis

System.Data.SqlServerCe-Namespace