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
Not applicable.
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