Harkon Δημοσ. 27 Οκτωβρίου 2008 Δημοσ. 27 Οκτωβρίου 2008 Καλησπέρα σας, έχω κάνει Populate ένα dataset με δεδομένα από μία βάση και επιθυμώ να περάσω το dataset αυτό ως όρισμα σε μια webmethod ενός απομακρυσμένου webservice. Επειδή όμως κάποιες φορές το dataset είναι αρκετά μεγάλο δέχομαι timeout error. Σκέφτηκα λοιπόν αντί να κάνω πολλαπλά ερωτήματα στην βάση για να παίρνω κάθε φορά Χ εγγραφές, να πάρω υποσύνολα του dataset. Υπάρχει κάποιος τρόπος; γενικά είναι καλύτερο αυτό που πάω να κάνω ή θα μπλέξω χειρότερα; κι επίσης με ποιο κριτήριο να χωρίσω το τις εγγραφές και να πάρω αυτές τις Χ κάθε φορά; πχ έχω δει πως οι 500 εγγραφές δεν αποτυγχάνουν αλλά είναι ασφαλές συμπέρασμα αυτό ή πάλι θα υπάρχει κάποιο ρίσκο; σας ευχαριστώ. > [size=2][/size][size=2][color=#0000ff]Dim[/color][/size][size=2] sql [/size][size=2][color=#0000ff]As[/color][/size][size=2] [/size][size=2][color=#0000ff]String[/color][/size][size=2] = [/size][size=2][color=#800000]"SELECT * from [/color][/size][size=2][color=#800000].Material" [/color][/size][size=2] [/size][size=2][color=#0000ff] [/color][/size][size=2][/size][size=2][color=#0000ff]Dim[/color][/size][size=2] cmd [/size][size=2][color=#0000ff]As[/color][/size][size=2] [/size][size=2][color=#0000ff]New[/color][/size][size=2] SqlCommand(sql, cnSource) [/size][size=2][/size][size=2][color=#0000ff]Dim[/color][/size][size=2] adapter [/size][size=2][color=#0000ff]As[/color][/size][size=2] SqlDataAdapter adapter = [/size][size=2][color=#0000ff]New[/color][/size][size=2] SqlDataAdapter(cmd) [/size][size=2][color=#0000ff]Dim[/color][/size][size=2] dSet [/size][size=2][color=#0000ff]As[/color][/size][size=2] [/size][size=2][color=#0000ff]New[/color][/size][size=2] DataSet adapter.Fill(dSet) [/size][size=2][color=#0000ff]Dim[/color][/size][size=2] result [/size][size=2][color=#0000ff]As[/color][/size][size=2] [/size][size=2][color=#0000ff]String [/color][/size][size=2] [/size][size=2][color=#008000] [/color][/size][size=2][/size][size=2][color=#0000ff]If[/color][/size][size=2] dSet.Tables(0).Rows.Count > 0 [/size][size=2][color=#0000ff]Then [/color][/size][size=2][/size][size=2][color=#0000ff]Dim[/color][/size][size=2] ws [/size][size=2][color=#0000ff]As[/color][/size][size=2] [/size][size=2][color=#0000ff]New[/color][/size][size=2] SynchWebService.Service result = ws.InsertMaterial(dSet) ''εδω παιρνω το timeout όταν είναι πολλές οι εγγραφές [/size][size=2][color=#0000ff]Else [/color][/size][size=2]result = [/size][size=2][color=#800000]"No material found" [/color][/size][size=2][/size][size=2][color=#0000ff]End[/color][/size][size=2] [/size][size=2][color=#0000ff]If [/color][/size][size=2]adapter.Dispose() cnSource.Dispose() [/size] παραθέτω κομμάτι του κώδικα:
Billman Δημοσ. 29 Οκτωβρίου 2008 Δημοσ. 29 Οκτωβρίου 2008 Late reply, αλλά: Έχεις δοκιμάσει να αλλάξεις το timeout value του web service? > ws.Timeout = 5000 ' <- milliseconds
Harkon Δημοσ. 29 Οκτωβρίου 2008 Μέλος Δημοσ. 29 Οκτωβρίου 2008 να πω την αλήθεια όχι, θα το δοκιμάσω σήμερα κάτι δοκιμάζω πάντως με την filter για να παίρνω range εγγραφών. θα ποστάρω πίσω για νεότερα, σε ευχαριστώ πολύ για την απάντησή σου πάντως
dt008 Δημοσ. 29 Οκτωβρίου 2008 Δημοσ. 29 Οκτωβρίου 2008 και με την Select στο DataTable μπορείς να πάρεις υποσύνολο εγγραφών.
Ticket Δημοσ. 30 Οκτωβρίου 2008 Δημοσ. 30 Οκτωβρίου 2008 χμμ να πω και εγώ την ιδέα μου? Γιατί δεν δοκιμάζεις μέσα από το Query σου να επιλέξεις τις top 500 εγγραφές (αφού εκεί δεν έχεις πρόβλημα) και να το βάλεις σε ένα loop όσο έχεις στο dataset rowcount>0
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.