SqlCeDataReader.Seek-Methode

Platziert die SqlCeDataReader-Klasse im Datensatz mit indizierten Werten, die den angegebenen Parametern entsprechen.

Namespace: System.Data.SqlServerCe
Assembly: System.Data.SqlServerCe (in system.data.sqlserverce.dll)

Syntax

'Declaration
Public Function Seek ( _
    dbSeekOptions As DbSeekOptions, _
    ParamArray index As Object() _
) As Boolean
'Usage
Dim instance As SqlCeDataReader
Dim dbSeekOptions As DbSeekOptions
Dim index As Object()
Dim returnValue As Boolean

returnValue = instance.Seek(dbSeekOptions, index)
public bool Seek (
    DbSeekOptions dbSeekOptions,
    params Object[] index
)
public:
bool Seek (
    DbSeekOptions dbSeekOptions, 
    ... array<Object^>^ index
)
public boolean Seek (
    DbSeekOptions dbSeekOptions, 
    Object[] index
)
public function Seek (
    dbSeekOptions : DbSeekOptions, 
    ... index : Object[]
) : boolean

Parameter

  • index
    Der Index des Datensatzes.

Rückgabewert

Ein boolescher Wert. True zeigt an, dass der Cursor in einer Zeile positioniert wurde.

Ausnahmen

Ausnahmetyp Bedingung

SqlCeException

Der Wert wurde nicht gefunden, oder ein anderer Fehler ist aufgetreten.

Hinweise

Diese Methode soll eine schnellere Alternative zu einer SELECT-Anweisung zum Abrufen einer Zeile aus einer Basistabelle darstellen. Anstelle einer WHERE-Klausel in einer SELECT-Anweisung kann Seek dazu verwendet werden, eine Zeile schnell anhand ihres Indexwerts abzurufen. Zum Abrufen des Mitarbeiters mit der Mitarbeiter-ID 5 könnten Sie z. B. eine SELECT-Anweisung ausführen. Die Leistung wird jedoch erheblich gesteigert, wenn Sie Seek mit dem Wert 5 für den Mitarbeiter-ID-Index verwenden.

Seek kann nur verwendet werden, wenn CommandType auf TableDirect, CommandText auf einen gültigen Namen für eine Basistabelle und IndexName auf einen gültigen Indexnamen in der angegebenen Basistabelle festgelegt ist.

Nach der Verwendung von Seek gibt die SqlCeDataReader-Klasse die übrigen Zeilen in ihrer Indexreihenfolge zurück. Wenn Seek bei einer SqlCeDataReader-Klasse verwendet wird, deren Bereich durch SetRange angegeben wird, wird Seek nur in Zeilen innerhalb dieses Bereichs positioniert. Weitere Informationen erhalten Sie unter dem Thema "IRowsetIndex::Seek" in der OLE DB-Dokumentation.

Beispiel

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

.NET Framework-Sicherheit

  • Volle Vertrauenswürdigkeit für den unmittelbaren Aufrufer. Dieser Member kann von nur teilweise vertrauenswürdigem Code nicht verwendet werden. Weitere Informationen finden Sie unter .

Plattformen

Windows CE, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows XP Professional x64 Edition, Windows XP SP2

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

SqlCeDataReader-Klasse
SqlCeDataReader-Member
System.Data.SqlServerCe-Namespace