Enumeración DbRangeOptions
Especifica las opciones utilizadas por el método SetRange al indicar el intervalo de índices en el que se va a realizar la búsqueda.
Esta enumeración tiene un atributo FlagsAttribute que permite una combinación bit a bit de los valores de sus miembros.
Espacio de nombres: System.Data.SqlServerCe
Ensamblado: System.Data.SqlServerCe (en System.Data.SqlServerCe.dll)
Sintaxis
'Declaración
<FlagsAttribute> _
Public Enumeration DbRangeOptions
'Uso
Dim instance As DbRangeOptions
[FlagsAttribute]
public enum DbRangeOptions
[FlagsAttribute]
public enum class DbRangeOptions
[<FlagsAttribute>]
type DbRangeOptions
public enum DbRangeOptions
Miembros
Nombre del miembro | Descripción | |
---|---|---|
InclusiveStart | Incluye en el intervalo el valor startData. | |
InclusiveEnd | Incluye en el intervalo el valor endData. | |
ExclusiveStart | Excluye del intervalo el valor startData. | |
ExclusiveEnd | Excluye del intervalo el valor endData. | |
ExcludeNulls | Excluye del intervalo los valores nulles una referencia NULL (Nothing en Visual Basic).. | |
Prefix | Especifica un intervalo en el que los valores de índice comienzan por el valor de startData. Al utilizar la opción Prefix, endData debe establecerse en nulles una referencia NULL (Nothing en Visual Basic).. | |
Match | Especifica un intervalo en el que los valores de índice coinciden con el valor de startData. Al utilizar la opción Match, endData debe establecerse en nulles una referencia NULL (Nothing en Visual Basic).. | |
Default | Equivalente a la configuración de las marcas InclusiveStart y InclusiveEnd. |
Comentarios
Si especifica la opción Match o Prefix, el valor endData debe ser nulles una referencia NULL (Nothing en Visual Basic)..
No se pueden combinar las opciones Match y ExcludeNulls.
Ejemplos
En este ejemplo, las opciones de intervalo para la operación Seek en el índice se especifican como InclusiveStart o InclusiveEnd al llamar al método SetRange.
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);
}