Condividi tramite


Allocazione di un handle di istruzione

Prima che un'applicazione possa eseguire un'istruzione, deve allocare un handle di istruzione. Questa operazione viene eseguita chiamando SQLAllocHandle con il parametro HandleType impostato su SQL_HANDLE_STMT e InputHandle che punta a un handle di connessione.

Gli attributi di istruzione sono caratteristiche dell'handle di istruzione. Attributi di istruzione di esempio possono includere l'utilizzo di segnalibri e il tipo di cursore da utilizzare con il set di risultati dell'istruzione. Gli attributi delle istruzioni vengono impostati con SQLSetStmtAttr e le relative impostazioni correnti vengono recuperate usando SQLGetStmtAttr. Non vi è alcun requisito che stabilisce che un'applicazione debba impostare tutti gli attributi di istruzione. Per tutti gli attributi di istruzione sono disponibili valori predefiniti, alcuni dei quali specifici del driver.

Prestare particolare attenzione nell'utilizzare molte delle opzioni di istruzione e connessione ODBC. La chiamata a SQLSetConnectAttr con fOption impostata su SQL_ATTR_LOGIN_TIMEOUT controlla il tempo di attesa di un tentativo di connessione durante l'attesa di una connessione (0 specifica un'attesa infinita). Per i siti con tempi di risposta prolungati è possibile impostare un valore elevato per garantire che le connessioni dispongano di tempo sufficiente per il completamento. L'intervallo, tuttavia, deve essere sempre sufficientemente ridotto per consentire all'utente di ricevere una risposta entro un periodo di tempo ragionevole se il driver non è in grado di connettersi.

La chiamata a SQLSetStmtAttr con fOption impostata su SQL_ATTR_QUERY_TIMEOUT imposta un intervallo di timeout di query per proteggere il server e l'utente da query a esecuzione prolungata.

La chiamata a SQLSetStmtAttr con fOption impostata su SQL_ATTR_MAX_LENGTH limita la quantità di dati di testo e immagine che un'istruzione singola può recuperare. La chiamata a SQLSetStmtAttr con fOption impostata su SQL_ATTR_MAX_ROWS limita anche un set di righe alle prime n righe, se necessario. Si noti che impostando SQL_ATTR_MAX_ROWS, il driver esegue un'istruzione SET ROWCOUNT nel server. Ciò influisce su tutte le istruzioni di SQL Server Microsoft, inclusi trigger e aggiornamenti.

Utilizzare particolare attenzione quando si impostano queste opzioni. È preferibile che tutti gli handle di istruzione in un handle di connessione specifichino le stesse impostazioni per SQL_ATTR_MAX_LENGTH e SQL_ATTR_MAX_ROWS. Se il driver passa da un handle di istruzione a un altro con valori diversi per queste opzioni, il driver deve generare le istruzioni SET TEXTSIZE e SET ROWCOUNT appropriate per modificare le impostazioni. Il driver non può inserire queste istruzioni nello stesso batch dell'istruzione SQL dell'utente perché l'istruzione SQL dell'utente può contenere un'istruzione che deve essere la prima in un batch. Il driver deve inviare le istruzioni SET TEXTSIZE e SET ROWCOUNT in un batch distinto, che genera automaticamente un round trip aggiuntivo al server.

Vedere anche

Esecuzione di query (ODBC)