Enumerazione DbSeekOptions
Opzioni che consentono di specificare con quali modalità il metodo Seek eseguirà la ricerca su un indice.
Questa enumerazione dispone di un attributo FlagsAttribute che consente una combinazione bit per bit dei relativi valori dei membri.
Spazio dei nomi System.Data.SqlServerCe
Assembly: System.Data.SqlServerCe (in System.Data.SqlServerCe.dll)
Sintassi
'Dichiarazione
<FlagsAttribute> _
Public Enumeration DbSeekOptions
'Utilizzo
Dim instance As DbSeekOptions
[FlagsAttribute]
public enum DbSeekOptions
[FlagsAttribute]
public enum class DbSeekOptions
[<FlagsAttribute>]
type DbSeekOptions
public enum DbSeekOptions
Membri
Nome membro | Descrizione | |
---|---|---|
FirstEqual | Consente di avanzare alla prima riga corrispondente sull'indice, secondo l'ordine dell'indice. | |
LastEqual | Consente di avanzare alla prima riga corrispondente sull'indice, secondo l'ordine dell'indice. | |
AfterEqual | Consente di avanzare all'ultima riga corrispondente sull'indice. Se non sono presenti righe corrispondenti, consente di avanzare alla prima riga dopo il valore di ricerca, secondo l'ordine dell'indice. | |
After | Avanza alla prima riga con i valori, secondo l'ordine dell'indice, dopo il valore di ricerca. | |
BeforeEqual | Consente di avanzare alla prima riga corrispondente sull'indice. Se non sono presenti righe corrispondenti, consente di avanzare all'ultima riga prima del valore di ricerca, secondo l'ordine dell'indice. | |
Before | Consente di avanzare all'ultima riga con i valori, secondo l'ordine dell'indice, prima del valore di ricerca. |
Esempi
In questo esempio viene specificata l'opzione FirstEqual per l'operazione eseguita dal metodo Seek sull'indice.
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);
}