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

ASP.NET Discussion :

passer une liste a DbParameter.value


Sujet :

ASP.NET

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 551
    Points : 260
    Points
    260
    Par défaut passer une liste a DbParameter.value
    Bonjour,

    Comment passer une liste à un DbParameter.value ?

    J'ai tenté ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    private List<Bien> GetBienFromLstFavorisDB(DbConnection cnx, List<Favoris> LstFavoris)
        {
            List<Bien> listeBien = new List<Bien>();
            using (DbCommand cmd = cnx.CreateCommand())
            {
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.CommandText = "SELECT  * FROM Bien where idBien IN (@lstIdBien) ";
     
                DbParameter lstIdBien = cmd.CreateParameter();
                lstIdBien.ParameterName = "@lstIdBien";
                lstIdBien.DbType = System.Data.DbType.Int32;
                lstIdBien.Value = LstFavoris.FindAll(x => x.IdBien != -1).ToList();
                lstIdBien.Direction = System.Data.ParameterDirection.Input;
                cmd.Parameters.Add(lstIdBien);
     
                using (DbDataReader reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        Bien bien = new Bien();
                        bien.Id = reader["idBien"] == DBNull.Value ? default(int) : int.Parse(reader["idBien"].ToString());
                        bien.PrixComComprise = reader["prixComComprise"] == DBNull.Value ? default(int) : int.Parse(reader["prixComComprise"].ToString());
                        bien.Surface = reader["surface"] == DBNull.Value ? default(int) : int.Parse(reader["surface"].ToString());
                        bien.TextAnnonce = reader["textAnnonce"] == DBNull.Value ? default(String) : (reader["textAnnonce"].ToString());
                        bien.PhotoPrincipal = reader["nomFic"] == DBNull.Value ? default(String) : (reader["nomFic"].ToString());
                        bien.CP = reader["cp"] == DBNull.Value ? default(String) : (reader["cp"].ToString());
                        listeBien.Add(bien);
                    }
                }
     
     
            }
     
            return listeBien;
     
        }
    mais cela ne fonctionne pas.
    Il faut bien conserver cela : ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     lstIdBien.DbType = System.Data.DbType.Int32;
     lstIdBien.Value = LstFavoris.FindAll(x => x.IdBien != -1).ToList();
    Merci d'avance

    Nath

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Ce n'est pas possible.

    Deux possibilités : construire la requête en concaténant les paramétres (en créant les noms des DbParameter) ou éventuellement, utiliser une proc stoc avec un TVP.

    Exemple pour le premier cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    private List<Bien> GetBienFromLstFavorisDB(DbConnection cnx, List<Favoris> LstFavoris)
    {
    	List<Bien> listeBien = new List<Bien>();
    	using (DbCommand cmd = cnx.CreateCommand())
    	{
    		StringBuilder sqlRequest = new StringBuilder("SELECT  * FROM Bien where idBien IN (");
    		cmd.CommandType = System.Data.CommandType.Text;
    		int rank = 0;
    		foreach(int id in LstFavoris)
    		{
    			if (rank > 0)
    			{
    				sqlRequest.Append(",");
    			}
    			string paramName = string.Format("@idBien{0}", rank++);
    			sqlRequest.Append(paramName);
     
    			DbParameter idParam = cmd.CreateParameter();
    			idParam.ParameterName = paramName;
    			idParam.DbType = System.Data.DbType.Int32;
    			idParam.Value = id;
     
    			cmd.Parameters.Add(idParam);			
    		}
    		sqlRequest.Append(")");
    		cmd.CommandText = sqlRequest.ToString();

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 551
    Points : 260
    Points
    260
    Par défaut
    merci ! cela fonctionne à la perfection !

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

Discussions similaires

  1. Passer une liste de string dans un preparedstatement
    Par thierryler dans le forum JDBC
    Réponses: 6
    Dernier message: 13/03/2008, 14h30
  2. Faire passer une liste horizontale à la ligne
    Par Gizmil dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 19/11/2007, 16h40
  3. se positionner dans une Liste avec sa value
    Par anthropo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/06/2007, 07h56
  4. comment mettre une image dans une liste avec les values ?
    Par Ekimasu dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 15/05/2007, 17h51
  5. Réponses: 2
    Dernier message: 08/09/2006, 09h00

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