Associazione di parametri ODBC

Ogni parametro in un'istruzione SQL deve essere associato a una variabile nell'applicazione prima di eseguire l'istruzione. Quando l'applicazione associa una variabile a un parametro, descrive tale variabile, ovvero indirizzo, tipo di dati C e così via, al driver. Descrive anche il parametro stesso: tipo di dati SQL, precisione e così via. Il driver archivia queste informazioni nella struttura gestita per tale istruzione e usa le informazioni per recuperare il valore dalla variabile quando viene eseguita l'istruzione.

I parametri possono essere associati o riassociati in qualunque momento prima di eseguire un'istruzione. Se un parametro viene riassociato dopo l'esecuzione di un'istruzione, l'associazione non viene applicata finché l'istruzione non viene eseguita di nuovo. Per associare un parametro a una variabile diversa, un'applicazione semplicemente riassocerà il parametro alla nuova variabile; l'associazione precedente viene rilasciata automaticamente.

Una variabile rimane associata a un parametro fino a quando non vi viene associata una variabile diversa, fino a quando tutti i parametri non vengono disassociati chiamando SQLFreeStmt con l'opzione SQL_RESET_PARAMS, o fino al rilascio dell'istruzione. Per questo motivo, l'applicazione deve essere sicura che le variabili non vengano liberate fino a quando non vengono dissociate. Per altre informazioni, vedere Allocazione e liberazione di buffer.

Poiché le associazioni di parametri sono solo informazioni archiviate nella struttura gestita dal driver per l'istruzione, possono essere impostate in qualsiasi ordine. Sono anche indipendenti dall'istruzione SQL eseguita. Si supponga, ad esempio, che un'applicazione associ tre parametri e che quindi esegua l'istruzione SQL seguente:

INSERT INTO Parts (PartID, Description, Price) VALUES (?, ?, ?)  

Se l'applicazione esegue immediatamente l'istruzione SQL

SELECT * FROM Orders WHERE OrderID = ?, OpenDate = ?, Status = ?  

nello stesso handle di istruzione, vengono usate le associazioni di parametro per l’istruzione INSERT perché si tratta delle associazioni archiviate nella struttura dell'istruzione. Nella maggior parte dei casi, si tratta di una pratica di programmazione scorretta e dovrebbe essere evitata. L'applicazione deve invece chiamare SQLFreeStmt con l'opzione SQL_RESET_PARAMS per annullare l'associazione di tutti i parametri precedenti e quindi associarne di nuovi.

Questa sezione descrive gli argomenti seguenti: