Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2836 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Question SQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Question SQL

n°1673915
cfrankb
Posté le 20-01-2008 à 00:01:06  profilanswer
 

SITUATION: Tu as une table (e.g. activités) et tu veux extraire tous les enregistrements de celle-ci qui appartiennent à un utilisateur.
 
La logique conventionnelle serait de faire une requête du genre: SELECT * FROM activities WHERE u_uid=$user_uid;
Par la suite tu obtiens un RecordSet et effectuera une boucle pour extraire chaque ligne (row) jusqu'à ce que la fin de données soit obtenues.  
 
PROBLEM: On m'a dit qu'il y avait une autre façon de faire, qui permettra d'obtenir plus d'une ligne (row) à la fois et ainsi contournée le besoin d'utiliser une boucle.
 
QUESTIONS: La solution recherchée pourrait s'appliquer soit en PHP ou en C# (contexte: MySQL ou MSSQL). Est-ce que quelqu'un a soit un exemple de code à partager, le nom ou la démarche logique à suivre pour obtenir le résultat souhaité. Alternativement, si vous pensez que c'est impossible vous pouvez donner la raison qui vous amène à cette conclusion.
 
Merci pour votre aide.


Message édité par cfrankb le 20-01-2008 à 00:02:05
mood
Publicité
Posté le 20-01-2008 à 00:01:06  profilanswer
 

n°1674016
moi23372
Posté le 20-01-2008 à 15:45:06  profilanswer
 

en C# tu as deux techniques, la première en utilisant des readears (mode connecté avec une boucle) et un autre mode qui est le mode déconnecté (via les Adapter).
 
Tu trouveras les informations dans la MSDN en chargeant les OleDbAdapter, SqlAdapter, OracleAdapater, etc...
 
Grâce à ceux ci tu peux charger directement toutes les lignes dans un dataset sans devoir boucler dessus.

n°1674221
MagicBuzz
Posté le 21-01-2008 à 10:31:21  profilanswer
 

(à noter qu'avec un recordset ces solutions sont vraies aussi... le problème vient juste du filtre sur id=$user_id : ça ne ramène qu'une ligne, là où on en veut plusieurs)
 
après, quelle que soit la méthode retenue, il suffit de boucler sur l'objet obtenu (dataadapter, datareader, recordset, etc.) plutôt que de refaire X requêtes


Message édité par MagicBuzz le 21-01-2008 à 10:32:11
n°1675363
cfrankb
Posté le 22-01-2008 à 21:16:21  profilanswer
 

Merci pour vos réponses. Je cherche spécifiquement une solution qui n'utilise pas de boucle parce c'est ainsi que la question d'entrevu était posée. Je vais examiné la documentation au sujet des Adapters en C# sur MSDN. Si quelqu'un avait un petit bout de code qui illustre comment c'est fait, j'apprécierais grandement parce que j'apprend plus vite avec des exemples concrets.

n°1675613
ixemul
Nan mais sans blague ! ⚡
Posté le 23-01-2008 à 13:34:06  profilanswer
 

cfrankb a écrit :

Merci pour vos réponses. Je cherche spécifiquement une solution qui n'utilise pas de boucle parce c'est ainsi que la question d'entrevu était posée. Je vais examiné la documentation au sujet des Adapters en C# sur MSDN. Si quelqu'un avait un petit bout de code qui illustre comment c'est fait, j'apprécierais grandement parce que j'apprend plus vite avec des exemples concrets.


 
 

Code :
  1. SqlDataAdapter oSqlDataAdapter = new SqlDataAdapter("select * from customers", oConnection);
  2. DataSet oDataSet = new DataSet("Customers" );
  3. oSqlDataAdapter.Fill(oDataSet,"Customers" );


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
n°1675631
cfrankb
Posté le 23-01-2008 à 13:53:23  profilanswer
 

Merci ixemul ! :)

n°1675689
MagicBuzz
Posté le 23-01-2008 à 15:12:00  profilanswer
 

ouais enfin ça te dispense pas d'une boucle pour parcourir ton dataset ensuite hein...
 
toutes les solutions citées plus haut font rigoureusement la même chose...

n°1675692
ixemul
Nan mais sans blague ! ⚡
Posté le 23-01-2008 à 15:14:46  profilanswer
 

MagicBuzz a écrit :

ouais enfin ça te dispense pas d'une boucle pour parcourir ton dataset ensuite hein...
 
toutes les solutions citées plus haut font rigoureusement la même chose...


 
 
ça dépends si tu veux binder direct sur un contrôle  :whistle:


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
n°1675703
MagicBuzz
Posté le 23-01-2008 à 15:28:15  profilanswer
 

ouais effectivement, mais le bind de toute façon il fait une boucle quand même, même si tu la vois pas :o ;)

Message cité 1 fois
Message édité par MagicBuzz le 23-01-2008 à 15:28:28
n°1675711
ixemul
Nan mais sans blague ! ⚡
Posté le 23-01-2008 à 15:38:17  profilanswer
 

MagicBuzz a écrit :

ouais effectivement, mais le bind de toute façon il fait une boucle quand même, même si tu la vois pas :o ;)


 
 
Ouais, mais merci, j'en ai un peu trop vu la ou je suis avec des types qui parse un dataset pour remplir une collection, puis ensuite parse cette collection pour construire un datatable et le binder ensuite sur un contrôle... Sur un projet au forfait en plus...
 
resultat je le refait de 0 depuis septembre...
 
Ya des gens, faudrait leur interdire de toucher un compilo :/


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
mood
Publicité
Posté le 23-01-2008 à 15:38:17  profilanswer
 

n°1675727
MagicBuzz
Posté le 23-01-2008 à 15:54:08  profilanswer
 

:lol:
 
effectivement, c'est un peu tout naze comme truc ^^
 
m'enfin le pire que j'ai vu, c'est des gens qui font une requête :
 
select id from matable;
 
parcourent le résultat, et pour chaque ligne :
 
select meschamps from matable where id = @id
 
puis copie meschamps dans un objet
 
qui sert ensuite à allimenter un listview par exemple :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Question SQL

 

Sujets relatifs
[SQL] Question bidon pour les débutants[SQL SERVER 2005] types numeriques, question existentielle
Activation des pages persos chez free, question SQL[SQL] une question de pur debutant
[SQL] question de cours sur requêtes SQLQuestion sur sauvegarde de BDD SQL chez Online
Petite question PHP/SQLQuestion a propos de requetes SQL
[SQL / ACCESS] question un peu tordu sur une requete.[SQL] Question sur foreign key
Plus de sujets relatifs à : Question SQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR