> Tech > I. Paramétrage des requêtes côté client (2)

I. Paramétrage des requêtes côté client (2)

Tech - Par iTPro - Publié le 24 juin 2010
email

Si le paramétrage côté client est mal programmé il peut causer plus de dégradation que de gain.
Puisque le serveur ne peut pas paramétrer les requêtes, et l'avantage du paramétrage simple ou obligatoire est perdu. Nous essayerons d'illustrer certaines des erreurs communément faites, et recommanderons également quelques bonnes

I. Paramétrage des requêtes côté client (2)

pratiques.

Considérez l’exemple au-dessous où le code client se fonde entièrement sur le paramétrage de côté de serveur :

command.CommandText = "Select * From t1 Where col1 = 1 And col2 = ‘abcd’";
command.ExecuteNonQuery();
command.CommandText = "Select * From t1 Where col1 = 1 And col2 = ‘abc’";
command.ExecuteNonQuery();

Ceci a comme conséquence un plan paramétré, le serveur effectue le paramétrage :

(@1 tinyint,@2 varchar(8000))SELECT * FROM [t1] WHERE [col1]=@1 AND [col2]=@2

Notez qu’en l’absence de paramétrage du côté client, le mappage forcé des types côté serveur s’applique. Toutes les requêtes sont mappées à Varchar (8000) ou à Nvarchar (4000). Si le paramètre est plus grand que Varchar(8000) alors Nvarchar(max) est utilisé.

Tandis que ceci peut sembler acceptable, si les paramètres sont toujours limités à disons 50 caractères (limités par le type et la longueur de la colonne), ce n’est pas une solution optimale. Considérez maintenant l’exemple suivant où la requête a été paramétrée incorrectement :

command.CommandText = "Select * From t1 Where col1 = @id And col2 = @str";
command.Parameters.AddWithValue("@id", 1);
command.Parameters.AddWithValue("@str", "abc");
command.ExecuteNonQuery();
command.Parameters[0].Value = 2;
command.Parameters[1].Value = "abcd";
command.ExecuteNonQuery();

Téléchargez gratuitement cette ressource

IBMi et Cloud : Table ronde Digitale

IBMi et Cloud : Table ronde Digitale

Comment faire évoluer son patrimoine IBMi en le rendant Cloud compatible ? Comment capitaliser sur des bases saines pour un avenir serein ? Faites le point et partagez l'expertise Hardis Group et IBM aux côtés de Florence Devambez, DSI d'Albingia.

Tech - Par iTPro - Publié le 24 juin 2010