• Aucun résultat trouvé

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.