IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Problème de Requètes parametrés avec DAC


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de thelpi
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 217
    Par défaut Problème de Requètes parametrés avec DAC
    salut à tous,

    je travaille actuellement sur une appli c# lié à une base SQLServer2000, cependant j'ai du codé l'accès aux données avec une DAC (merci à ce tuto au passage : http://ditch.developpez.com/dotnet/factories/).
    Depuis, pour faire mes requètes parametrés, j'ai été obligé de faire cette méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    protected void AddParam(IDbCommand cmd, string nameParam, DbType typeParam, int sizeParam)
            {
                IDbDataParameter result = cmd.CreateParameter();
                result.DbType = typeParam;
                result.Size = sizeParam;
                result.ParameterName = nameParam;
                cmd.Parameters.Add(result);
            }
    Mon problème, c'est que je ne comptais pas renseigner un paramètre "sizeParam", mais le compilateur m'y a contraint...
    Ce qui fait que pour renseigner un paramètre de requète de type varchar(50), et que le type Varchar n'est pas reconnu par System.data.dbType, je me retrouver a utliser ma fonction de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AddParam(cmdNonQuery, "@un_nom_de_param", DbType.String, ???);
    Mon problème est simple : qu'elle est la valeur de sizeParam la mieux approprié (je doute que ce soit 50, varchar ne doit pas ètre la même chose que string)? et aurais-je des problèmes avec ma méthode si je change de SGBD?

    merci à vous, n'hésitez pas à me reprendre si j'ai pas été assez clair
    (sachant que par la suite je vous demanderais la même chose pour tout les types important: byte, float, double, int32, int64, char... ^^)

  2. #2
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Citation Envoyé par thelpi Voir le message
    Mon problème, c'est que je ne comptais pas renseigner un paramètre "sizeParam", mais le compilateur m'y a contraint...
    Tu peux préciser ? Pour les paramètres input, je n'ai jamais eu besoin de spécifier de taille, les dll d'accès se débrouillent très bien sans.

  3. #3
    Membre confirmé Avatar de thelpi
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 217
    Par défaut
    au moment ou je prépare mon objet commande, si je met pas de paramètre size, j'ai "La méthode SqlCommand.Prepare requiert que tous les paramètres de longueur variable aient une valeur Size explicitement définie différente de zéro."

  4. #4
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Mais là, tu ne spécifies pas de valeur à tes paramètres... Ce sont bien des Input ?

  5. #5
    Membre confirmé Avatar de thelpi
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 217
    Par défaut
    non je ne spécifie pas de valeurs, vu que j'utilise, pour une requete parametré, la méthode AddParam(...) une suel fois, en tout début de code, je prépare la requète, et plus tard j'utilise autant de fois que nécéssaire une méthode AddValue(nom de la commande, nom du paramètre a renseigner, valeur du paramètre)... ça répond à ta question? (je n'ai jamais utilisé Input, je suis donc pas sur d'avoir tout bien compris)

    merci de m'aider

  6. #6
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Ah ok. J'ai pas le souci parce que je recrée une commande en filant directement les valeurs des paramètres (je bosse avec ODP sur une base Oracle).
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cmd.Parameters.Add("ID", 9);
    cmd.Parameters.Add("Nom", "Bob");
    Si on en croit la MSDN http://msdn.microsoft.com/en-us/libr...d.prepare.aspx, l'utilisation de la méthode Prepare semble nécessiter de donner des tailles aux paramètres. As-tu vraiment besoin de faire "Prepare" avant d'exécuter ta requête ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de requètes parametrés avec DAC
    Par thelpi dans le forum C#
    Réponses: 9
    Dernier message: 09/07/2008, 18h39
  2. Problème de requête SQL avec DISTINCT et COUNT ?
    Par [ZiP] dans le forum Langage SQL
    Réponses: 4
    Dernier message: 29/01/2007, 17h11
  3. Problème de requête count(*) avec DB2
    Par elsodiop dans le forum DB2
    Réponses: 3
    Dernier message: 30/11/2006, 16h11
  4. Réponses: 5
    Dernier message: 10/07/2006, 12h05
  5. Problème de requête SQL avec instruction TRANSFORM
    Par Nosper dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 21/06/2005, 16h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo