.NET Framework Class Library  

SqlCeCommand.SetRange Method

Note: This namespace, class, or member is supported only in version 1.1 of the .NET Framework.

Restricts the set of rows that will be read by the SqlCeDataReader.

[Visual Basic]
Public Sub SetRange( _
   ByVal dbRangeOptions As DbRangeOptions, _
   ByVal startData() As Object, _
   ByVal endData() As Object _
)
[C#]
public void SetRange(
   DbRangeOptions dbRangeOptions,
   object[] startData,
   object[] endData
);
[C++]
public: void SetRange(
   DbRangeOptions dbRangeOptions,
   Object* startData __gc[],
   Object* endData __gc[]
);
[JScript]
public function SetRange(
   dbRangeOptions : DbRangeOptions,
   startData : Object[],
   endData : Object[]
);

Parameters

dbRangeOptions
The options used when specifying the range.
startData
The starting key values for the range.
endData
The ending key values for the range.

Exceptions

Exception Type Condition
InvalidOperationException IndexName property has not been set.

Remarks

This method is intended to be a faster alternative to a SELECT statement for retrieving a set of rows from a base table. Instead of a WHERE clause in a SELECT statement, SetRange can be used to quickly retrieve a set of rows based on their index values. For example, to retrieve a set of employees with an employee ID between 1 and 5, you could execute a SELECT statement, but setting a range of 1 to 5 on the employee ID index will greatly improve performance.

This method 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. When SetRange is used, the SqlCeDataReader returned from ExecuteReader will only return rows whose key values in the specified index match the range.

When Seek is used on a SqlCeDataReader that has a range, Seek will only position on rows in the specified range. For detailed information on SetRange, see the "IRowsetIndex::SetRange" topic in the OLE DB documentation.

Example

[Visual Basic, C#] This example retrieves data from the Orders table using an index into a SqlCeDataReader. The range on the index on which to Seek is specified by the SetRange method.

[Visual Basic] 
Public Sub CreateMySqlCeCommand(conn As SqlCeConnection)
   Dim cmd As SqlCeCommand = conn.CreateCommand()
   
   cmd.CommandType = CommandType.TableDirect
   
   'This is the name of the base table 
   cmd.CommandText = "Orders"
   
   'Assume: Index contains three columns [int, datetime, money]
   cmd.IndexName = "SomeIndex"
   
   Dim start(3) As Object
   Dim [end](1) As Object
   
   start(0) = 1
   start(1) = New SqlDateTime(1996, 1, 1)
   start(2) = New SqlMoney(10.0)
   
   [end](0) = 5
   
   cmd.SetRange(DbRangeOptions.InclusiveStart Or DbRangeOptions.InclusiveEnd, start, [end])
   
   Dim rdr As SqlCeDataReader = cmd.ExecuteReader()
   rdr.Seek(DbSeekOptions.AfterEqual, 1, New SqlDateTime(1997, 1, 1), New SqlMoney(10.5))
   
   While rdr.Read()
   End While ' Read data in the usual way    
   rdr.Close()
End Sub 

[C#] 
public void CreateMySqlCeCommand(SqlCeConnection conn) {
    SqlCeCommand cmd = conn.CreateCommand();
    cmd.CommandType  = CommandType.TableDirect;
    
    // This is the name of the base table 
    cmd.CommandText  = "Orders";

    //Assume: Index contains three columns [int, datetime, money]
    cmd.IndexName    = "SomeIndex"; 
            
    object[] start = new object[3];
    object[] end   = new object[1];
                
    start[0] = 1;
    start[1] = new SqlDateTime(1996, 1, 1);
    start[2] = new SqlMoney(10.00);
            
    end[0]   = 5;

    cmd.SetRange(DbRangeOptions.InclusiveStart | DbRangeOptions.InclusiveEnd, start, end); 
    
    SqlCeDataReader rdr = cmd.ExecuteReader();             
    rdr.Seek(DbSeekOptions.AfterEqual, 1, new SqlDateTime(1997, 1,1), new SqlMoney(10.50));
            
    while(rdr.Read()) {
        // Read data in the usual way    
    }
    rdr.Close();
}

[C++, JScript] No example is available for C++ or JScript. To view a Visual Basic or C# example, click the Language Filter button Language Filter in the upper-left corner of the page.

Requirements

Platforms: .NET Compact Framework - Windows CE .NET

.NET Framework Security: 

See Also

SqlCeCommand Class | SqlCeCommand Members | System.Data.SqlServerCe Namespace