2010-10-26 19 views
0

J'ai une structure dans un service web en C#. Quand j'utilise "Select * from TABLE1"; dans un WebMethod je reçois une structure entièrement peuplée. Mais quand j'ajoute une clause WHERE, je reçois une réponse nulle. Pourquoi est-ce? J'ai cherché partout une explication simple mais je n'en ai pas trouvé. Comment puis-je utiliser un SELECT * FROM TABLE1 WHERE _id=" + id "'"; Si je ne souhaite récupérer qu'un seul message de la base de données, cela fonctionne correctement, mais pas lorsque j'obtiens une réponse à plusieurs lignes.utilise le paramètre lors du remplissage d'une structure avec l'ensemble de données C#?

Existe-t-il également un moyen de commander une réponse à plusieurs lignes de toute façon dans C#?

Merci d'avance!

modifier:

DataSet myDS = new DataSet(); 

    try 
    { 
     myConnection.Open(); 

     // Fill dataset with account data 
     //myCommand.Fill(myDS, "userdata"); 
     myAdapter.Fill(myDS, "toplista"); 

     myConnection.Close(); 

     int i = myDS.Tables["toplista"].Rows.Count; 
     toplista[] mytoplista = new toplista[i]; 
     i = 0; 


     foreach (DataRow row in myDS.Tables["toplista"].Rows) 
     { 
      mytoplista[i].name = row["_name"].ToString(); 
      mytoplista[i].points = int.Parse(row["_points"].ToString()); 
      mytoplista[i].level = row["_level"].ToString(); 

      i++; 
     } 
     return mytoplista; 
+0

Avez-vous besoin de parcourir le jeu de résultats et d'ajouter une liste de structures. – brumScouse

+1

C'est très difficile à dire sans voir de code. BTW, je vous suggère d'utiliser une requête paramétrée au lieu de la façon dont vous avez actuellement votre clause WHERE. –

Répondre

1

Suis-je comprends bien que votre struct représente un tuple de votre table? Si c'est le cas, vous devriez soit essayer de remplir un IEnumerable<MyStruct> ou seulement obtenir la première ligne correspondante de votre table. Sinon, que voulez-vous qu'il fasse avec le reste des données renvoyées?

+0

Donc, ce qui précède fonctionne quand j'obtiens toutes les valeurs, mais pas quand j'utilise une clause WHERE dans l'instruction select. – kakka47

+0

Quelle erreur obtenez-vous lorsque vous utilisez la clause WHERE? Est-il possible que vous le construisiez incorrectement? Dans la question, je remarque qu'il vous manque une seule citation avant l'ID. Comme Jon Skeet l'a souligné, vous devriez certainement utiliser une requête paramétrée pour des raisons de sécurité, mais cela pourrait aussi aider à éviter des erreurs comme celle-ci. – StriplingWarrior

+0

L'erreur est que je ne reçois aucune donnée, il ne retourne rien. Il est vraiment possible que je fasse beaucoup mal. Voici à quoi cela ressemble, je pense que les guillemets sont ok: String mySQL = "SELECT * FROM tbl_test WHERE _id = '" + id + "'"; J'ai lu sur le IEnumberable que vous avez suggéré ci-dessus, mais je dois lire plus pour vraiment le comprendre. Quelle est la différence entre IEnumberable et l'utilisation d'une boucle dans un ensemble de données comme je l'ai fait? – kakka47