다음을 통해 공유


DbSeekOptions 열거형

Seek 메서드가 인덱스에 따라 검색하는 방법을 지정하는 옵션입니다.

이 열거형에는 해당 멤버 값에 대한 비트 조합이 가능한 FlagsAttribute 특성이 있습니다.

네임스페이스:  System.Data.SqlServerCe
어셈블리:  System.Data.SqlServerCe.dll의 System.Data.SqlServerCe

구문

‘선언
<FlagsAttribute> _
Public Enumeration DbSeekOptions
‘사용 방법
Dim instance As DbSeekOptions
[FlagsAttribute]
public enum DbSeekOptions
[FlagsAttribute]
public enum class DbSeekOptions
[<FlagsAttribute>]
type DbSeekOptions
public enum DbSeekOptions

멤버

멤버 이름 설명
FirstEqual 인덱스 순서에 따라 인덱스에서 맨 처음 일치하는 행으로 이동합니다.
LastEqual 인덱스 순서에 따라 인덱스에서 마지막으로 일치하는 행으로 이동합니다.
AfterEqual 인덱스에서 마지막으로 일치하는 행으로 이동합니다. 일치하는 행이 없는 경우 인덱스 순서에 따라 검색 값 이후의 값을 가진 첫째 행으로 이동합니다.
After 인덱스 순서에 따라 검색 값 이후의 값을 가진 첫째 행으로 이동합니다.
BeforeEqual 인덱스에서 맨 처음 일치하는 행으로 이동합니다. 일치하는 행이 없는 경우 인덱스 순서에 따라 검색 값 이전의 값을 가진 마지막 행으로 이동합니다.
Before 인덱스 순서에 따라 검색 값 이전의 값을 가진 마지막 행으로 이동합니다.

예제

이 예에서는 인덱스의 Seek 작업에 대해 FirstEqual 옵션이 지정됩니다.

        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 네임스페이스