2011-04-18 3 views
2

Im ayant une table appelée transaktions où j'ai inséré la facturation des clients et le numéro de client. Ma clé primaire est un identifiant int qui a une spécificité d'identité. Ma question est comment puis-je sélectionner toutes les lignes qui contient un customer_nr spécifique et renvoie tous les résultats?C# sélection de la base de données

im fait en ce moment:

public string getCustomerTransaktions(string CustNr) 
{ 
    using (var cmd = new SqlCommand("select billing_name from [transaktions] where customer_nr = @customer_nr", Connect())) 
    { 
     cmd.Parameters.AddWithValue("@customer_nr", custNr); 
     using (var er = cmd.ExecuteReader()) 
     { 
      if (er.Read()) 
      { 
       return (string)er["billing_name"]; 
      } 
     } 
    } 
    return "UNKNOWN"; 
} 

Cela n'imprime la première ligne qui correspond au n ° de client, il y a atleast 20 rangs à gauche. Quelqu'un at-il une suggestion qui m'aidera? Cordialement

+1

Il semble que vous manquiez de notions de base ... Lisez les réponses ci-dessous qui sont parfaites pour vous guider. –

Répondre

1

Je suppose qu'une solution simple serait de retourner l'ensemble ResultSet au lieu de tring pour contourner la chaîne. Puis parcourez tous les éléments de votre méthode d'appel

2

tentent de changer le si à un moment

while (er.Read()) 
+0

J'ai essayé cela. Les résultats sont les mêmes, imprime seulement la première ligne – dumbel

+0

Mais revenez dans tout le corps, casse efficacement que tout. – VikciaR

3

Puisque vous faites return ... et spécifications de votre méthode assez bien limite les résultats à une valeur particulière, vous ne pouvez jamais revenir plus d'un nom de facturation. Il retournera un nom dès qu'une ligne a été lue, ou votre valeur par défaut si aucune ligne n'a été retournée.

Vous devez mettre les valeurs dans une liste ou de la même manière et renvoyer cela.

4

D'accord avec @Niklas et @Skurmedel, vous devez utiliser une boucle pour traiter plusieurs enregistrements et les assembler avant de les renvoyer.

par exemple.

public List<string> getCustomerTransaktions(string CustNr) 
{ 
    List<string> names = new List<string>(); 

    using (var cmd = new SqlCommand("select billing_name from [transaktions] where customer_nr = @customer_nr", Connect())) 
    { 
     cmd.Parameters.AddWithValue("@customer_nr", custNr); 
     using (var er = cmd.ExecuteReader()) 
     { 
      while(er.Read()) 
      { 
       names.Add((string)er["billing_name"]); 
      } 
     } 
    } 

    return names; 
} 
Questions connexes