Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Λαθος αποτέλεσμα WebMethod

Îåêßíçóå áðü ôï ìÝëïò gio1283. Τελευταία δημοσίευση από το μέλος eliasm στις 25-02-2010, 13:04. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  24-02-2010, 16:24 57317

    Λαθος αποτέλεσμα WebMethod

    Καλησπέρα,

    έχω φτιάξει ένα webservice σε c# το οποίο καλεί έναν πίνακα από τη βάση μου. Η μέθοδος που έχω φτιάξει είναι η getStoixeia(string name). Θέλω λοιπόν όταν καλώ αυτή τη μέθοδο να εμφανίζει τα στοιχεία address κ telephone μόνο όμως για το συγκεκριμένο όνομα που θα δίνεται. Όμως όταν πάω να τρέξω το webservice βάζω το όνομα που θέλω και πατώντας Invoke που εμφανίζει αυτήν την γραμμή <string xmlns="http://tempuri.org/">4</string>  όπου 4 είναι το σύνολο των ονομάτων που έχω στο table μου. Τι κάνω λάθος?Ευχαριστώ

    Ο κώδικας που έχω γράψει είναι:

    [WebMethod]

    public string getStoixeia(string name)

    {

    DataSet ds = new DataSet();

    SqlDataAdapter adapter = new SqlDataAdapter();

    SqlConnection cn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Desktop\Test\App_Data\Vasi1.mdf;Integrated Security=True;User Instance=True;");

    cn.Open();

    adapter.SelectCommand = new SqlCommand("Select * From Users", cn);

    adapter.Fill(ds);

    string x = Convert.ToString(adapter.Fill(ds));

    return x;

    }

  •  25-02-2010, 00:01 57326 σε απάντηση της 57317

    Απ: Λαθος αποτέλεσμα WebMethod

    Αν θυμάμαι καλά όταν του λες Convert.ToString(adapter.Fill(ds)) θα ψάξει να βρει την καλύτερη δυνατή λύση για να επιστρεψει string,που στην περίπτωση σου είναι είναι το πλήθος των εγγραφών που έχει που φυσικά θα είναι όλες εφόσον το query (Select * From Users)  ζητάει όλα τα πεδία και όλες τις εγγραφές.

    Για αρχή το query κάπως έτσι Select address,telephone From Users

    Εφόσον σαν παράμετρο περνάς το name  έτσι το query σου θα επρεπε να μοιαζει καπως ετσι

    string myQuery = String.Format (@”Select address,telephone From Users where <όνομα πεδίου>=’{0}’”,name)

    Επίσης μπορείς να χρησιμοποιήσεις έναν DataReader που είναι ταχύτερος ,γιατί απλά θέλεις να εμφανίσεις τα στοιχεία μάλλον στο ίδιο control από ότι κατάλαβα


    Don't try to argue with the machine
    Elias Markelis
    MCPD,MCT
  •  25-02-2010, 09:59 57327 σε απάντηση της 57317

    Απ: Λαθος αποτέλεσμα WebMethod

    Βλέπω διάφορα λάθη σε αυτό που κάνεις.
    1) Άλλαξε τον τίτλο της ερώτησής σου. Έχεις λάθος αποτέλεσμα από εκτέλεση SqlDataAdapter και όχι από WebMethod.
    2) Εκτελείς δυο φορές την adapter.Fill
    3) Γράφεις ότι θέλεις να πάρεις τα στοιχεία address και telephone αλλά τελικά το πρόβλημά σου είναι ότι το αποτέλεσμα είναι 4 αντί για 1
    4) Δεν χρησιμοποιείς πουθενά το argument name που έχεις στο όρισμα της συνάρτησής σου. Κάνε χρήση των Parameters στην SqlCommand για να περάσεις την παράμετρο name. Διάβασε λίγο εδώ. Αυτό που γράφει eliasm (χρήση string.format) δεν είναι πολύ σωστό γιατί το service σου θα είναι ευάλωτο σε sql injection attacks.

    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  25-02-2010, 13:04 57332 σε απάντηση της 57327

    Απ: Λαθος αποτέλεσμα WebMethod

    Δημήτρη όσον αφόρα την String.Format έχεις δίκιο, απλά ηταν αργά το βράδι, όπως δίκιο έχεις και για το διάβασμα


    Don't try to argue with the machine
    Elias Markelis
    MCPD,MCT
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems