Condividi tramite


Funzione JetGetCurrentIndex

Si applica a: Windows | Windows Server

Funzione JetGetCurrentIndex

La funzione JetGetCurrentIndex determina il nome dell'indice corrente di un cursore specificato. Questo nome viene usato anche per selezionare nuovamente l'indice come indice corrente usando JetSetCurrentIndex. Può essere usato anche per individuare le proprietà di tale indice usando JetGetTableIndexInfo.

    JET_ERR JET_API JetGetCurrentIndex(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __out         JET_PSTR szIndexName,
      __in          unsigned long cchIndexName
    );

Parametri

sesid

Sessione da utilizzare per questa chiamata.

tableid

Cursore da utilizzare per questa chiamata.

szIndexName

Buffer di output che riceve il nome dell'indice corrente del cursore.

cchIndexName

Dimensione massima in caratteri del buffer di output.

Valore restituito

Questa funzione restituisce il tipo di dati JET_ERR con uno dei codici restituiti seguenti. Per altre informazioni sui possibili errori ESE, vedere Errori del motore di archiviazione estendibile e parametri di gestione degli errori.

Codice restituito

Descrizione

JET_errSuccess

Operazione riuscita.

JET_errClientRequestToStopJetService

Non è possibile completare l'operazione perché tutte le attività sull'istanza associata alla sessione sono cessate a seguito di una chiamata a JetStopService.

JET_errInstanceUnavailable

Non è possibile completare l'operazione perché l'istanza associata alla sessione ha rilevato un errore irreversibile che richiede la revoca dell'accesso a tutti i dati per proteggere l'integrità dei dati. Questo errore verrà restituito solo da Windows XP e versioni successive.

JET_errNotInitialized

Non è possibile completare l'operazione perché l'istanza associata alla sessione non è ancora stata inizializzata.

JET_errRestoreInProgress

Non è possibile completare l'operazione perché è in corso un'operazione di ripristino nell'istanza associata alla sessione.

JET_errSessionSharingViolation

La stessa sessione non può essere usata contemporaneamente per più thread. Questo errore verrà restituito solo da Windows XP e versioni successive.

JET_errTermInProgress

Non è possibile completare l'operazione perché l'istanza associata alla sessione viene arrestata.

JET_wrnBufferTruncated

L'operazione è stata completata correttamente, ma il buffer di output era troppo piccolo per ricevere l'intero nome dell'indice.

Il buffer di output è stato riempito con la quantità di nome dell'indice corrispondente. Se il buffer di output ha una lunghezza di almeno un carattere, la stringa nel buffer di output verrà terminata null.

Nota Questo errore non verrà restituito se cchIndexName è zero. Per altre informazioni, vedere la sezione Osservazioni.

In caso di esito positivo, il nome dell'indice corrente del cursore specificato verrà restituito nel buffer di output. Se viene restituito JET_wrnBufferTruncated, il buffer di output conterrà la quantità di nome dell'indice corrispondente allo spazio specificato. Se il buffer di output ha una lunghezza di almeno un carattere, la stringa restituita in tale buffer verrà terminata null. Non verrà apportata alcuna modifica allo stato del database.

In caso di errore, lo stato del buffer di output non sarà definito. Non verrà apportata alcuna modifica allo stato del database.

Commenti

Se non è presente alcun indice corrente per il cursore, verrà restituita una stringa vuota. Ciò può verificarsi quando il cursore si trova nell'indice cluster della tabella e non è stato definito alcun indice primario. Questo indice è noto come indice sequenziale della tabella e non ha alcuna definizione. In ogni caso, l'impostazione dell'indice corrente su una stringa vuota tramite JetSetCurrentIndex selezionerà l'indice cluster indipendentemente dalla presenza di una definizione di indice primario.

In questa funzione è presente un bug importante in tutte le versioni. Se il buffer di output è troppo piccolo per ricevere l'intero nome dell'indice e il buffer di output è di almeno un carattere, JET_wrnBufferTruncated NON verrà restituito. JET_errSuccess verranno invece restituiti. Per evitare questo problema, il buffer di output deve essere sempre di almeno JET_cbNameMost + 1 (65) caratteri di lunghezza.

Requisiti

Requisito Valore

Client

Richiede Windows Vista, Windows XP o Windows 2000 Professional.

Server

Richiede Windows Server 2008, Windows Server 2003 o Windows 2000 Server.

Intestazione

Dichiarato in Esent.h.

Libreria

Usare ESENT.lib.

DLL

Richiede ESENT.dll.

Unicode

Implementato come JetGetCurrentIndexW (Unicode) e JetGetCurrentIndexA (ANSI).

Vedere anche

JET_ERR
JET_SESID
JET_TABLEID
JetGetTableIndexInfo
JetSetCurrentIndex