SqlCeDataReader.Seek Method

Posiziona l'oggetto SqlCeDataReader sul record con valori indicizzati corrispondenti ai parametri specificati.

Spazio dei nomi: System.Data.SqlServerCe
Assembly: System.Data.SqlServerCe (in system.data.sqlserverce.dll)

Sintassi

'Dichiarazione
Public Function Seek ( _
    dbSeekOptions As DbSeekOptions, _
    ParamArray index As Object() _
) As Boolean
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

Parametri

  • index

Valore restituito

Un valore Booleano; true indica che il cursore è posizionato su una riga.

Eccezioni

Tipo di eccezione Condizione
SqlCeException

Il valore non è stato trovato o si è verificato un altro errore.

Osservazioni

Questo metodo è destinato a essere un'alternativa più rapida all'istruzione SELECT per il recupero di una riga da una tabella di base. Anziché la clausola WHERE in un'istruzione SELECT, è possibile utilizzare Seek per recuperare più rapidamente una riga in base al relativo valore di indice. Ad esempio, per recuperare un impiegato con identificatore 5, è possibile eseguire un'istruzione SELECT, ma utilizzando Seek con un valore di 5 sull'identificatore impiegato si aumenteranno notevolmente le prestazioni.

Il metodo Seek può essere utilizzato solo quando la proprietà CommandType è impostata su TableDirect, la proprietà CommandText è impostata su un nome di tabella di base valido e la proprietà IndexName è impostata su un nome di indice valido della tabella di base specificata.

Dopo aver utilizzato Seek, l'oggetto SqlCeDataReader restituirà le righe rimanenti nel relativo ordine dell'indice. Quando si utilizza Seek su un oggetto SqlCeDataReader che presenta un intervallo specificato dal metodo SetRange, Seek verrà posizionato solo sulle righe nell'intervallo specificato. Per ulteriori informazioni, vedere "IRowsetIndex::Seek" nella documentazione di OLE DB.

Esempio

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

Affidabilità

Tutti i membri statici pubblici (Shared in Microsoft Visual Basic) di questo tipo sono affidabili. Non è invece garantita l'affidabilità dei membri dell'istanza.

Piattaforme

Piattaforme di sviluppo

Windows Vista, Windows Mobile 5.0, Windows XP Professional with Service Pack 2 (SP2), Windows Server 2003, Windows Mobile 2003 for Pocket PC, Windows CE 5.0
Informazioni sulla versione
.NET Framework e .NET Compact Framework
Supportato in 3.5
.NET Framework
Supportato in 3.0
.NET Compact Framework e .NET Framework
Supportato in 2.0

Vedere anche

Riferimento

SqlCeDataReader Class
SqlCeDataReader Members
System.Data.SqlServerCe Namespace