Condividi tramite


Associazione delle colonne del set di risultati

Le applicazioni possono associare quante più o meno colonne del set di risultati desiderano, compreso l'associazione di nessuna colonna. Quando viene recuperata una riga di dati, il driver restituisce i dati per le colonne vincolate all'applicazione. L'associazione di tutte le colonne nel set di risultati dipende dall'applicazione. Ad esempio, le applicazioni che generano report hanno in genere un formato fisso; tali applicazioni creano un set di risultati contenente tutte le colonne usate nel report e quindi associano e recuperano i dati per tutte queste colonne. Le applicazioni che visualizzano schermi pieni di dati a volte consentono all'utente di decidere quali colonne visualizzare; tali applicazioni creano un set di risultati contenente tutte le colonne desiderate dall'utente, ma associano e recuperano i dati solo per tali colonne scelte dall'utente.

I dati possono essere recuperati da colonne non associate chiamando SQLGetData. Viene comunemente chiamato per recuperare dati lunghi, che spesso superano la lunghezza di un singolo buffer e devono essere recuperati in parti.

Le colonne possono essere collegate in qualsiasi momento, anche dopo che le righe sono state recuperate. Tuttavia, le nuove associazioni non diventano effettive fino al successivo recupero di una riga; non vengono applicate ai dati dalle righe già recuperate.

Una variabile rimane associata a una colonna fino a quando non viene associata una variabile diversa alla colonna, fino a quando la colonna non viene associata chiamando SQLBindCol con un puntatore Null come indirizzo della variabile, fino a quando tutte le colonne non vengono associate chiamando SQLFreeStmt con l'opzione SQL_UNBIND o fino al rilascio dell'istruzione. Per questo motivo, l'applicazione deve essere sicura che tutte le variabili associate rimangano valide purché siano associate. Per altre informazioni, vedere Allocazione e liberazione di buffer.

Poiché le associazioni di colonna sono solo informazioni associate alla struttura della dichiarazione, possono essere impostate in qualsiasi ordine. Sono anche indipendenti dai risultati ottenuti. Si supponga, ad esempio, che un'applicazione associa le colonne del set di risultati generato dall'istruzione SQL seguente:

SELECT * FROM Orders  

Se l'applicazione esegue quindi l'istruzione SQL

SELECT * FROM Lines  

nello stesso handle di istruzione, le associazioni di colonna per il primo set di risultati sono ancora attive perché sono le associazioni archiviate nella struttura dell'istruzione. Nella maggior parte dei casi, si tratta di una pratica di programmazione scarsa e deve essere evitata. L'applicazione deve invece chiamare SQLFreeStmt con l'opzione SQL_UNBIND per annullare l'associazione di tutte le colonne precedenti e quindi associarne di nuove.