begin process at 2008 07 21 01:17:41
1 213 544 membres
13 nouveaux aujourd'hui
14 167 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

UTILISATION DES REQUÊTES PARAMÉTRÉES AVEC ADO.NET 2.0


Information sur le tutorial

Catégorie :Base de données Tutorial .NET ( DotNet ) Date de création : 02/07/2007 14:59:06 Vu : 3 963 fois

Note :
Aucune note

Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note


Description

Alors que beaucoup de développeurs s'embêtent avec la localisation(symbole décimal, format de la date...) et les problèmes d'injection SQL... d'autres utilisent les requêtes paramétrées... voici un très court tutoriel sur leur utilisation.

Tutorial

ADO.net : Les requêtes paramétrées

En informatique de gestion, nous sommes souvent amenés à interroger des bases de données. Malheureusement, dans les environnements multi-linguales l’utilisation des dates et décimaux peut vite devenir fastidieuse. Nous allons voir comment les requêtes paramétrées peuvent nous simplifier la vie.

Mauvaise habitude !

De nombreux développeurs ont pris de très mauvaises habitudes lorsqu’il s’agit d’interroger les bases de données… Parmi elles, on retrouve la manière de passer les paramètres. On trouve trop souvent des codes ressemblant à ça : (voir plus complexe)

string sql = "SELECT * FROM utilisateurs WHERE age<=" + age.ToString();

Dans un environnement simple, ce code n’aura pas de mal à fonctionner mais dès que vous allez vouloir porter votre application sur une machine dont la langue diffère de la votre ou sur une autre base de données… vous risquez d’avoir quelques soucis.

Pour pallier à ce problème, il existe dans le framework une classe nommée DbParameter permettant de simplifier et surtout de sécuriser le passage de paramètres.

Utilisation de DbParameter

L’utilisation de la classe DbParameter est très simple… mais nécessite d’écrire quelques lignes de plus… ce qui rebute la plupart du temps les moins courageux d’entres nous. Nous verrons plus loin qu’il y a pourtant beaucoup d’avantages à l’utiliser.

Nous pouvons donc modifier la requête précédente en :

string sql = "SELECT * FROM utilisateurs WHERE age<=@age";
DbParameter param = cmd.CreateParameter();
param.ParameterName = "@age";
param.DbType = DbType.Int32;
param.Value = age;

cmd.Parameters.Add(param);

cmd représente une instance de la classe DbCommand.

Avantages

On voit très clairement dans l’exemple ci-dessus que nous ne nous sommes pas souciés de la localisation… à aucun moment nous vérifions si le séparateur de décimal est le point ou la virgule… Non ! Tout cela est automatique !

Ceci fonctionne aussi pour les dates. Pas besoin de vérifier le format…

Autre point positif… avec les requêtes paramétrées, il n’est pas possible de faire de l’injection SQL.



  • signaler à un administrateur
    Commentaire de moumouche_a le 13/12/2007 18:34:04

    merci pour votre astu

  • signaler à un administrateur
    Commentaire de amdevelop le 26/01/2008 16:35:28

    Merci pour le code, il sera mieux si vous l'avez ecrit dés le début (déclaration du cmd)

  • signaler à un administrateur
    Commentaire de The Red Man le 01/02/2008 17:42:39

    A quel moment utilise tu la variable sql ??

  • signaler à un administrateur
    Commentaire de meliubaf le 21/05/2008 17:02:34

    bon tutorial, mais malheureusement avec Sybase et ses dll que j'ajoute au GAC je ne m'en sors pas. La ligne de commande SQL fonctionne mais si je veux passer des paramètres, pas moyen...

Ajouter un commentaire

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS