Il Modello ad Oggetti di ADO - Parameters e Parameter


Home Page | Commenti | Articoli | Faq | Documenti | Ricerca | Archivio | Storie dalla Sala Macchine | Contribuire | Login/Register

Un insieme Parameters contiene tutti gli oggetti Parameter relativi ad un oggetto Command.

Utilizzando il metodo Refresh sull'insieme Parameters di un oggetto Command vengono recuperate informazioni sui parametri del provider per la stored procedure o la query con parametri specificata nell'oggetto Command.

Alcuni provider non supportano chiamate a stored procedure o a query con parametri, pertanto verra' restituito un errore se si richiama il metodo Refresh sull'insieme Parameters utilizzando uno di questi provider.

Se non sono stati definiti oggetti Parameter personalizzati e si accede all'insieme Parameters prima di richiamare il metodo Refresh, ADO richiamera' automaticamente il metodo e compilera' l'insieme.

Se si conoscono le proprieta' dei parametri associati alla stored procedure o alla query con parametri da richiamare, e' possibile ridurre al minimo le chiamate al provider al fine di ottimizzare le prestazioni. Utilizzare il metodo CreateParameter per creare oggetti Parameter con le impostazioni di proprieta' appropriate e utilizzare il metodo Append per aggiungerli all'insieme Parameters. In tal modo sara' possibile impostare e restituire valori di parametri senza richiamare il provider per ottenere informazioni sui parametri. Se si scrive su un provider che non fornisce informazioni sui parametri, sara' necessario compilare manualmente l'insieme Parameters utilizzando questo metodo in modo da poter utilizzare i parametri.

Utilizzare il metodo Delete per rimuovere gli oggetti Parameter dall'insieme qualora necessario.

Torna alla mappa

Count

Indica il numero di oggetti contenuti nell'insieme. e' una proprieta' di sola lettura. Se il valore restituito e' pari a 0, l'insieme e' vuoto e non contiene nessun oggetto.

Nota:
La numerazione degli oggetti nell'insieme parte da 0 e non da 1.

Append

Accoda un nuovo oggetto all'insieme.

Sintassi


command.Parameters.Append oggetto

command Rappresenta l'oggetto Command su cui si sta' operando.
oggetto e' il nuovo oggetto Parameter da aggiungere.

Descrivendo il parametro autonomamente, e' possibile ridurre il numero di chiamate al provider e di conseguenza migliorare le prestazioni quando si utilizzano stored procedure o query con parametri. E' tuttavia necessario conoscere le proprieta' dei parametri associati alla stored procedure o alla query con parametri che si desidera chiamare.

Utilizzare il metodo Command.CreateParameter per creare gli oggetti Parameter con le proprieta' impostate adeguatamente prima di usare Append.

In questo modo, e' possibile impostare e restituire i valori senza dovere chiamare il provider per le informazioni necessarie. Se si chiama un provider che non fornisce informazioni relative ai parametri, sara' necessario compilare manualmente l'insieme Parameters utilizzando questo metodo per potere utilizzare i parametri.

Delete

Elimina un oggetto dall'insieme.

Sintassi


command.Parameters.Delete indice

command e' l'oggetto Command su cui si sta' operando.
indice e' il nome dell'oggetto che si desidera eliminare o il suo numero ordinale.

Osservazioni
Utilizzando Delete su un insieme si rimuove uno degli oggetti di quell'insieme.

Quando si chiama Delete e' necessario utilizzare la proprieta' Name dell'oggetto oppure l'indice dell'insieme corrispondente. Una variabile oggetto non e' un argomento valido.

Item

Restituisce un membro specifico dell'insieme in base al nome o al numero ordinale.

Sintassi


oggetto = command.Parameters.Item( indice )

oggetto e' la variabile Parameter che ricevera' l'oggetto richiesto
command e' l'oggetto Command su cui si sta' operando
indice e' il nome o il numero ordinale dell'oggetto da reperire.

Osservazioni
Utilizzare Item per reperire un oggetto specifico nell'insieme. Se non e' possibile trovare nell'insieme un oggetto corrispondente all'argomento indice, si verifichera' un errore.

Item e' il metodo predefinito per tutti gli insiemi, quindi e' possibile utilizzare anche la forma "ridotta" del metodo.


oggetto = command.Parameters(indice)

Refresh

Aggiorna gli oggetti dell'insieme in modo che corrispondano agli oggetti specifici disponibili presso il provider.

Sintassi


command.Parameters.Refresh

command e' l'oggetto Command su cui si sta' operando

Osservazioni
Utilizzando Refresh e' possibile recuperare le informazioni sui parametri sul lato provider per la stored procedure o la query con parametri specificata. L'insieme risultera' vuoto per i provider che non supportano le chiamate di stored procedure o le query con parametri.

Impostare la proprieta' ActiveConnection dell'oggetto Command su un oggetto Connection valido, la proprieta' CommandText su un comando valido e la proprieta' CommandType su adCmdStoredProc prima di chiamare Refresh.

Se si accede all'insieme Parameters prima di chiamare Refresh, il metodo verra' chiamato automaticamente e l'insieme verra' compilato.

Nota
Se si utilizza Refresh per ottenere informazioni sui parametri dal provider e tale metodo restituisce uno o piu' oggetti Parameter con tipo di dati a lunghezza variabile, e' possibile che venga allocata memoria per i parametri in base alla relativa dimensione potenziale massima, causando un errore durante l'esecuzione. Per evitare che si verifichino errori, e' necessario impostare esplicitamente la proprieta' Size per questi parametri prima di chiamare Execute.

L'oggetto Parameter

Le informazioni dei singoli parametri possono essere sia scritte che lette attraverso lo stesso oggetto Parameter. Ci sono quattro tipi di "direzioni" per i singoli parametri: input, output, input ed output e valore di ritorno.

Un Parameter puo' servire come parametro di input, come parametro di output che mantiene delle informazioni o contiene il risultato di una Stored Procedure. Il metodo Refresh della collection Parameters forza il driver ad aggiornare le informazioni dei singoli Parametri, tuttavia questo puo' impiegare molto tempo.

Quando stiamo lavorando con dati "long", il metodo AppendChunk puo' essere usato per scrivere dati in blocchi.

Il seguente esempio crea parametri per una Stored Procedure: La Stored Procedre prende un parametro in input e ritorna un valore in output.


Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset
Dim prm As ADODB.Parameter

' Define a Command object for a stored procedure.
cmd.ActiveConnection = "DSN=pubs;uid=sa"
cmd.CommandText = "myADOParaProc"
cmd.CommandType = adCmdStoredProc
cmd.CommandTimeout = 15

' Set up new parameter for the stored procedure.
Set prm = Cmd.CreateParameter("Type", adChar, adParamInput, 12, "Business")
Cmd.Parameters.Append prm

' Create a record set by executing the command.
Set rs = Cmd.Execute
While (Not rs.EOF)
Debug.Print rs(0)
rs.MoveNext
Wend

Dopo che un parametro e' stato specificato, il metodo Append e' usato per "attaccare" l'oggetto alla collection. Quando la Stored Procedure e' eseguita, il recordset e' creato e ritornato.

Torna alla mappa

Attributes

Indica una o piu' caratteristiche di un oggetto.

Questa proprieta' e' di lettura/scrittura e il suo valore puo' corrispondere alla somma di uno o piu' dei valori riportati nella seguente tabella:

  • adParamSigned
    Predefinita. Indica che il parametro accetta valori con segno.
  • adParamNullable
    Indica che il parametro accetta valori Null.
  • adParamLong
    Indica che il parametro accetta dati binari lunghi.

Quando si impostano piu' attributi, e' possibile sommare le costanti appropriate. Se si imposta il valore della proprieta' su una somma che contiene costanti incompatibili, verra' restituito un errore.

Direction

Indica se il parametro e' di input, di output o entrambi, oppure se e' il valore restituito da una stored procedure.

I valori possibili sono i seguenti:

  • adParamUnknown
    Indica se la direzione del parametro e' sconosciuta.
  • adParamInput
    Valore predefinito. Indica un parametro di input.
  • adParamOutput
    Indica un parametro di output.
  • adParamInputOutput
    Indica sia un parametro di input che di output.
  • adParamReturnValue
    Indica un valore restituito.

Osservazioni
Utilizzare la Direction per specificare il modo in cui un parametro viene passato a o da una procedura. La proprieta' e' di lettura/scrittura. In tal modo e' possibile utilizzare provider che non restituiscono queste informazioni o impostare le informazioni quando non si desidera che venga eseguita un'altra chiamata al provider per recuperare le informazioni relative ai parametri.

Non tutti i provider sono in grado di determinare la direzione dei parametri nelle relative stored procedure. In questo caso sara' necessario impostare la Direction prima di eseguire la query.

Name

Indica il nome del parametro.

Osservazioni
Utilizzare questa proprieta' per assegnare o leggere il nome di un parametro. Per gli oggetti Parameter non ancora aggiunti all'insieme Parameters, la proprieta' e' di lettura/scrittura. Per gli oggetti gia' aggiunti, la proprieta' e' di sola lettura. Non e' necessario che i nomi all'interno di un insieme siano univoci.

NumericScale

Indica la scala dei valori numerici.

Il valore letto/impostato indica il numero di cifre decimali in base a cui verranno risolti i valori numerici.

Precision

Indica il grado di precisione dei valori numerici.

Imposta o restituisce un valore che indica il numero massimo di cifre utilizzate per rappresentare i valori.

Size

Indica le dimensioni massime di un oggetto Parameter espresse in byte o in caratteri.

Osservazioni
Utilizzare questa proprieta' per determinare o per fissare le dimensioni massime dei valori scritti nella proprieta' Value del parametro.

Se per un Parameter viene specificato un tipo di dati di lunghezza variabile (ad esempio tutti i dati di tipo String come adVarChar), sara' necessario impostare la proprieta' Size dell'oggetto prima di accodarla all'insieme Parameters in modo da evitare che si verifichi un errore.

Se l'oggetto Parameter e' gia' stato accodato all'insieme Parameters di un oggetto Command e per i dati e' stato specificato il tipo a lunghezza variabile, sara' necessario impostare la proprieta' Size dell'oggetto Parameter prima di eseguire l'oggetto Command in modo da evitare che si verifichi un errore.

Se si utilizza Refresh per ottenere dal provider informazioni sui parametri e vengono restituiti oggetti Parameter con dati a lunghezza variabile, in ADO la memoria per i parametri verra' allocata in base alla rispettiva dimensione potenziale massima causando un eventuale errore durante l'esecuzione.

Per evitare che tale errore si verifichi, e' necessario impostare esplicitamente la proprieta' Size per questi parametri prima di eseguire il comando.

Type

Indica il tipo operativo o il tipo di dato dell'oggetto Parameter.

Il valore puo' essere una delle costanti seguenti: L'indicatore di tipo OLE DB corrispondente e' riportato tra parentesi. Per ulteriori informazioni sui tipi di dati OLE DB, consultare il capitolo 10 e l'appendice A della guida di riferimento per i programmatori di OLE DB.

  • adArray
    Unito in un operatore logico OR a un altro tipo per indicare che i dati costituiscono una matrice sicura di quel tipo (DBTYPE_ARRAY).
  • adBigInt
    Intero con segno da 8 byte (DBTYPE_I8).
  • adBinary
    Valore binario (DBTYPE_BYTES).
  • adBoolean
    Valore booleano (DBTYPE_BOOL).
  • adByRef
    Unito in un operatore logico OR a un altro tipo per indicare che i dati costituiscono un puntatore a dati di altro tipo (DBTYPE_BYREF).
  • adBSTR
    Stringa di caratteri a terminazione Null (Unicode) (DBTYPE_BSTR).
  • adChar
    Valore String (DBTYPE_STR).
  • adCurrency
    Valore di valuta (DBTYPE_CY). Si tratta di un numero a virgola fissa con quattro cifre a destra della virgola decimale. E' memorizzato in un intero con segno da 8 byte scalato per 10.000.
  • adDate
    Valore Date (DBTYPE_DATE). Si tratta di una data memorizzata come Double, la cui parte intera rappresenta il numero di giorni a partire dal 30 dicembre 1899, mentre la parte frazionaria rappresenta la frazione di un giorno.
  • adDBDate
    Valore data (ggmmaaaa) (DBTYPE_DBDATE).
  • adDBTime
    Valore tempo (oommss) (DBTYPE_DBTIME).
  • adDBTimeStamp
    Indicatore data/ora (ggmmaaaaoommss piu' una frazione in miliardesimi) (DBTYPE_DBTIMESTAMP).
  • adDecimal
    Valore numerico esatto con grado di precisione e di scala fisso (DBTYPE_DECIMAL).
  • adDouble
    Valore con virgola mobile in precisione doppia (DBTYPE_R8).
  • adEmpty
    Non e' stato specificato alcun valore (DBTYPE_EMPTY).
  • adError
    Codice di errore a 32 bit (DBTYPE_ERROR).
  • adGUID
    Identificatore univoco globale (GUID) (DBTYPE_GUID).
  • adIDispatch
    Puntatore a un'interfaccia Idispatch su un oggetto OLE (DBTYPE_IDISPATCH).
  • adInteger
    Intero con segno da 4 byte (DBTYPE_I4).
  • adIUnknown
    Puntatore a un'interfaccia Iunknown su un oggetto OLE (DBTYPE_IUNKNOWN).
  • adLongVarBinary
    Valore binario lungo (solo oggetto Parameter).
  • adLongVarChar
    Valore String lungo (solo oggetto Parameter).
  • adLongVarWChar
    Valore stringa a terminazione Null lungo (solo oggetto Parameter).
  • adNumeric
    Valore numerico esatto con grado di precisione e di scala fisso (DBTYPE_NUMERIC).
  • adSingle
    Valore con virgola mobile in precisione semplice (DBTYPE_R4).
  • adSmallInt
    Intero con segno da 2 byte (DBTYPE_I2).
  • adTinyInt
    Intero con segno da 1 byte (DBTYPE_I1).
  • adUnsignedBigInt
    Intero senza segno da 8 byte (DBTYPE_UI8).
  • adUnsignedInt
    Intero senza segno da 4 byte (DBTYPE_UI4).
  • adUnsignedSmallInt
    Intero senza segno da 2 byte (DBTYPE_UI2).
  • adUnsignedTinyInt
    Intero senza segno da 1 byte (DBTYPE_UI1).
  • adUserDefined
    Variabile definita dall'utente (DBTYPE_UDT).
  • adVarBinary
    Valore binario (solo oggetto Parameter).
  • adVarChar
    Valore String (solo oggetto Parameter).
  • adVariant
    Variant di automazione (DBTYPE_VARIANT).
  • adVector
    Unito in un operatore logico OR a un altro tipo per indicare che i dati rappresentano una struttura DBVECTOR, cosi' come viene definita da OLE DB, nella quale sono inclusi il conteggio degli elementi e un puntatore a dati di altro tipo (DBTYPE_VECTOR).
  • adVarWChar
    Stringa di caratteri Unicode a terminazione Null (solo oggetto Parameter).
  • adWChar
    Stringa di caratteri Unicode a terminazione Null (DBTYPE_WSTR).

Value

Indica il valore assegnato all'oggetto Parameter. Il valore predefinito dipende dalla proprieta' Type.

AppendChunk

Accoda dati a un oggetto Parameter di grandi dimensioni in formato testo o binario.

Sintassi


parameter.AppendChunk dati

parameter Oggetto Parameter su cui si opera
dati elemento contenente i dati che si desidera accodare.

Osservazioni
Utilizzare AppendChunk su un oggetto Parameter per inserirvi dati binari o letterali lunghi. Nel caso in cui la memoria del sistema sia limitata, sara' possibile utilizzare AppendChunk per gestire i valori lunghi in blocchi anziche' integralmente.

Se il bit adFldLong nella proprieta' Attributes e' impostato su True, sara' possibile utilizzare AppendChunk per quel parametro.

La prima chiamata AppendChunk su un oggetto Parameter consente di scrivere dati nel parametro sovrascrivendo i dati esistenti. Le successive chiamate consentono invece di aggiungere dati ai dati esistenti. Una chiamata AppendChunk che passa un valore nullo elimina tutti i dati del parametro.


I commenti sono aggiunti quando e soprattutto se ho il tempo di guardarli e dopo aver eliminato le cagate, spam, tentativi di phishing et similia. Quindi non trattenete il respiro.

Nessun messaggio this document does not accept new posts

Precedente Successivo


Davide Bianchi, lavora come Unix/Linux System Administrator presso una societa' di "sicurezza informatica" (aka: $networkgestapo) di Haarlem. Contatti: mail: davide AT onlyforfun.net , Jabber: davideyeahsure AT gmail.com,

Volete contribuire? Leggete come!.
 
 

Il presente sito e' frutto del sudore della mia fronte (e delle mie dita), se siete interessati a ripubblicare uno degli articoli, documenti o qualunque altra cosa presente in questo sito per cortesia datemene comunicazione (o all'autore dell'articolo se non sono io), cosi' il giorno che faccio delle aggiunte potro' avvisarvi e magari mandarvi il testo aggiornato.


Questo sito era composto con VIM, ora e' composto con VIM ed il famosissimo CMS FdT.

Questo sito non e' ottimizzato per la visione con nessun browser particolare, ne' richiede l'uso di font particolari o risoluzioni speciali. Siete liberi di vederlo come vi pare e piace, o come disse qualcuno: "Finalmente uno dei POCHI siti che ancora funzionano con IE5 dentro Windows 3.1".

Web Interoperability Pleadge Support This Project
Powered By Gort