Metodo SqlCeDataReader.Seek
Posiziona l'oggetto SqlCeDataReader sul record con valori indicizzati corrispondenti ai parametri specificati.
Spazio dei nomi System.Data.SqlServerCe
Assembly: System.Data.SqlServerCe (in System.Data.SqlServerCe.dll)
Sintassi
'Dichiarazione
<SecurityCriticalAttribute> _
<SecurityTreatAsSafeAttribute> _
<SecurityPermissionAttribute(SecurityAction.Assert, UnmanagedCode := True)> _
Public Function Seek ( _
dbSeekOptions As DbSeekOptions, _
ParamArray index As Object() _
) As Boolean
'Utilizzo
Dim instance As SqlCeDataReader
Dim dbSeekOptions As DbSeekOptions
Dim index As Object()
Dim returnValue As Boolean
returnValue = instance.Seek(dbSeekOptions, _
index)
[SecurityCriticalAttribute]
[SecurityTreatAsSafeAttribute]
[SecurityPermissionAttribute(SecurityAction.Assert, UnmanagedCode = true)]
public bool Seek(
DbSeekOptions dbSeekOptions,
params Object[] index
)
[SecurityCriticalAttribute]
[SecurityTreatAsSafeAttribute]
[SecurityPermissionAttribute(SecurityAction::Assert, UnmanagedCode = true)]
public:
bool Seek(
DbSeekOptions dbSeekOptions,
... array<Object^>^ index
)
[<SecurityCriticalAttribute>]
[<SecurityTreatAsSafeAttribute>]
[<SecurityPermissionAttribute(SecurityAction.Assert, UnmanagedCode = true)>]
member Seek :
dbSeekOptions:DbSeekOptions *
index:Object[] -> bool
public function Seek(
dbSeekOptions : DbSeekOptions,
... index : Object[]
) : boolean
Parametri
- dbSeekOptions
Tipo: System.Data.SqlServerCe.DbSeekOptions
Oggetto DbSeekOptions da utilizzare.
- index
Tipo: array<System.Object[]
Indice del record.
Valore restituito
Tipo: System.Boolean
Valore booleano; true indica che il cursore è posizionato su una riga.
Eccezioni
Eccezione | Condizione |
---|---|
SqlCeException | Il valore non è stato trovato o si è verificato un altro errore. |
Osservazioni
Questo metodo è destinato a essere un'alternativa più rapida all'istruzione SELECT per il recupero di una riga da una tabella di base. Anziché la clausola WHERE in un'istruzione SELECT, è possibile utilizzare Seek per recuperare più rapidamente una riga in base al relativo valore di indice. Ad esempio, per recuperare un impiegato con identificatore 5, è possibile eseguire un'istruzione SELECT, ma utilizzando Seek con un valore di 5 sull'identificatore impiegato si aumenteranno notevolmente le prestazioni.
Il metodo Seek può essere utilizzato solo quando la proprietà CommandType è impostata su TableDirect, la proprietà CommandText è impostata su un nome di tabella di base valido e la proprietà IndexName è impostata su un nome di indice valido della tabella di base specificata.
Dopo aver utilizzato Seek, l'oggetto SqlCeDataReader restituirà le righe rimanenti nel relativo ordine dell'indice. Quando si utilizza Seek su un oggetto SqlCeDataReader che presenta un intervallo specificato dal metodo SetRange, Seek verrà posizionato solo sulle righe nell'intervallo specificato. Per ulteriori informazioni, vedere "IRowsetIndex::Seek" nella documentazione di OLE DB.
Esempi
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);
}