SqlCeDataReader.Seek Method
Assembly: System.Data.SqlServerCe (in system.data.sqlserverce.dll)
'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 boolean Seek ( DbSeekOptions dbSeekOptions, Object[] index )
public function Seek ( dbSeekOptions : DbSeekOptions, ... index : Object[] ) : boolean
Parameters
- dbSeekOptions
The DbSeekOptions to use.
- index
The index of the record.
Return Value
A Boolean value; true indicates the cursor is positioned on a row.This method is intended to be a faster alternative to a SELECT statement for retrieving a row from a base table. Instead of a WHERE clause in a SELECT statement, Seek can be used to quickly retrieve a row based on its index value. For example, to retrieve an employee with an employee ID of 5, you could execute a SELECT statement, but using Seek with a value of 5 on the employee ID index will greatly improve performance.
Seek can only be used when CommandType is set to TableDirect, CommandText is set to a valid base table name, and IndexName is set to a valid index name on the specified base table.
After using Seek, SqlCeDataReader will return the remaining rows in their index order. When Seek is used on a SqlCeDataReader that has a range specified by SetRange, Seek will only position on rows within the range. For more information, see the "IRowsetIndex::Seek" topic in the OLE DB documentation.
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
Windows CE, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows XP Professional x64 Edition, Windows XP SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.