DBType (Dbtype)
Définit le type du paramètre. Il convient de faire attention car si celui-ci n'est pas défini, il y aura définition d'un type en partant de la valeur du paramètre. Ce comportement présente un risque élevé quant au fonctionnement de l'application. Le tableau de mappage suivant résume les types à utiliser.
Type .NET Framework
System.Data.DbType SqlDbType OleDbType OdbcType OracleType
bool Boolean Bit Boolean Bit Byte
byte Byte TinyInt UnsignedTinyInt TinyInt Byte
byte[] Binary VarBinary. Cette
conversion implicite échouera si le tableau d'octets est supérieur à la taille maximale de VarBinary, soit 8 000 octets.
VarBinary Binary Raw
char La déduction de
SqlDbType à partir de char n'est pas prise en charge.
Type .NET Framework
System.Data.DbType SqlDbType OleDbType OdbcType OracleType
DateTime DateTime DateTime DBTimeStamp DateTime DateTime
Decimal Decimal Decimal Decimal Numeric Number
double Double Float Double Double Double
float Single Real Single Real Float
Guid Guid UniqueIdentifier Guid UniqueIdentifier Raw
Int16 Int16 SmallInt SmallInt SmallInt Int16
Int32 Int32 Int Int Int Int32
Int64 Int64 BitInt BigInt BigInt Number
object Object Variant Variant La déduction de
OdbcType à partir de Object n'est pas prise en charge.
Blob
string String NVarChar. Cette
conversion implicite échouera si la chaîne est supérieure à la taille maximale de NVarChar, soit 4 000 caractères.
VarWChar NVarChar NVarChar
Timespan Time La déduction de
SqlDbType à partir de TimeSpan n'est pas prise en charge.
DBTime Time DateTime
UInt16 UInt16 La déduction de
SqlDbType à partir de UInt16 n'est pas prise en charge.
UnsignedSmallInt Int UInt16
UInt32 UInt32 La déduction de
SqlDbType à partir de UInt32 n'est pas prise en charge.
UnsignedInt BigInt UInt32
UInt64 UInt64 La déduction de
SqlDbType à partir de UInt64 n'est pas prise en charge.
UnsignedBigInt Numeric Number
AnsiString VarChar VarChar VarChar VarChar
AnsiStringFixedLengthChar Char Char Char
Currency Money Currency La déduction de
OdbcType à partir de Currency n'est pas prise en charge. Number Date La déduction de SqlType à partir de Date n'est pas prise en charge.
Type .NET Framework
System.Data.DbType SqlDbType OleDbType OdbcType OracleType
SByte La déduction de
SqlType à partir de SByte n'est pas prise en charge.
TinyInt La déduction de OdbcType à partir de SByte n'est pas prise en charge.
SByte
StringFixedLength NChar WChar NChar NChar
Time La déduction de
SqlType à partir de Time n'est pas prise en charge.
DBTime Time DateTime
VarNumeric La déduction de
SqlDbType à partir de VarNumeric n'est pas prise en charge.
VarNumeric La déduction de OdbcType à partir de VarNumeric n'est pas prise en charge.
Number
Direction (ParameterDirection)
Peut prendre une des valeurs suivantes :
Nom de membre Description
Input Le paramètre est un paramètre d'entrée.
InputOutput Le paramètre est à la fois un paramètre d'entrée et de sortie. Output Le paramètre est un paramètre de sortie.
ReturnValue Le paramètre représente une valeur de retour d'une opération telle qu'une procédure stockée, une fonction intégrée ou une fonction définie par l'utilisateur.
IsNullable (Booléen)
Indique si le paramètre peut prendre la valeur NULL.
Offset (SQL parameter uniquement)
Utilisée avec les types Long Binary et Long String. Indique la taille des fragments passés au client.
Precision (Byte)
Uniquement si le type est 'Decimal'. Définit le nombre de chiffres utilisés pour donner la valeur. Elle ne peut être séparée de la définition de la propriété 'Scale'. La version 1.0 du FrameWork ne vérifie pas les valeurs de ces deux propriétés.
Scale (Byte)
Définit le nombre de décimal d'une donnée de type décimal. Liée à la propriété précision.
Size (Integer)
Définie la taille en octet d'un paramètre d'entrée. N'est utilisée qu'avec des types de données de longueur variable (chaîne ou binaire). Là encore la taille sera déduite si elle n'est pas définie.
SourceColumn (String)
Utilise les informations de mappage pour attribuer une valeur au paramètre.
C'est en fait comme cela que travaillent généralement les commandes de mise à jour du DataAdapter. Regardons le code suivant :
'OleDbUpdateCommand
Command1.CommandText = "UPDATE Authors SET Author = ?, [Year Born] = ? WHERE (Au_ID = ?) AND (Author = ? " & _
"OR ? IS NULL AND Author IS NULL) AND ([Year Born] = ? OR ? IS NULL AND [Year Bor" & _
"n] IS NULL)"
Command1.Connection = Me.OleDbConnection1
Command1.Parameters.Add(New OleDbParameter("Author", OleDbType.VarWChar, 50, "Author"))
Command1.Parameters.Add(New OleDbParameter("Year_Born", OleDbType.SmallInt, 0, "Year Born"))
Command1.Parameters.Add(New OleDbParameter("Original_Au_ID", OleDbType.Integer, 0, ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "Au_ID", DataRowVersion.Original, Nothing))
Command1.Parameters.Add(New OleDbParameter("Original_Author", OleDbType.VarWChar, 50, ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "Author", DataRowVersion.Original, Nothing))
Command1.Parameters.Add(New OleDbParameter("Original_Author1", OleDbType.VarWChar, 50, ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "Author", DataRowVersion.Original, Nothing))
Command1.Parameters.Add(New OleDbParameter("Original_Year_Born", OleDb.OleDbType.SmallInt, 0, ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "Year Born", DataRowVersion.Original, Nothing)) Command1.Parameters.Add(New OleDbParameter("Original_Year_Born1", OleDbType.SmallInt, 0, ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "Year Born", DataRowVersion.Original, Nothing))
Le texte de la commande est de la forme :
Command1.CommandText = "UPDATE Authors SET Author = ?, [Year Born] = ? WHERE (Au_ID = ?) AND (Author = ? OR ? IS NULL AND Author IS NULL) AND ([Year Born] = ? OR ? IS NULL AND [Year Born] IS NULL)"
Je dois donc passer sept paramètres à ma commande. Il serait fastidieux de gérer à la volée tous ces paramètres, nous allons donc utiliser les propriétés des paramètres.
Pour un paramètre passant une des valeurs nouvelles, la syntaxe est :
Command1.Parameters.Add(New OleDbParameter("Author", OleDbType.VarWChar, 50, "Author"))
Soit de la forme :
Add(ByVal parameterName As String, ByVal oleDbType As OleDbType, ByVal size As Integer,
ByVal sourceColumn As String) As OleDbParameter
Pour le paramètre devant passer l'ancienne valeur du même champ
Command1.Parameters.Add(New OleDbParameter("Original_Author",
OleDbType.VarWChar, 50, ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "Author", DataRowVersion.Original, Nothing))
Soit de la forme :
New( ByVal parameterName As String, ByVal dbType As OleDbType, ByVal size As Integer, ByVal
direction As ParameterDirection, ByVal isNullable As Boolean, ByVal precision As Byte, ByVal scale
SourceVersion (DataRowVersion)
Définit la version de la colonne désignée par SourceColumn pour valoriser le paramètre. Peut prendre une des valeurs suivantes :
membre Description
Current Le paramètre utilise la valeur actuelle de la colonne. Il s'agit de la valeur par défaut. Default Le paramètre utilise le DefaultValue de la colonne.
Original Le paramètre utilise la valeur d'origine de la colonne. Proposed Le paramètre utilise une valeur proposée.