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

 

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

Εκτέλεση Command πριν το Command

Îåêßíçóå áðü ôï ìÝëïò geochatz. Τελευταία δημοσίευση από το μέλος anjelinio στις 09-05-2006, 13:28. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  08-05-2006, 11:52 12381

    Εκτέλεση Command πριν το Command

    Εχω μία απορία η οποία δεν ξέρω πως μπορεί να λυθεί. Εχω ένα πρόγραμμα στο οποίο έχω ένα Class το οποίο διαχειρίζεται οποιαδήποτε ενέργεια με τη βάση δεδομένων. Εκεί σε ένα Property υπάρχει και το Connection.

    Αυτό που θέλω να κάνω τώρα είναι να μπορώ να εκτελώ ένα συγκεκριμένο command πριν απο οποιαδήποτε άλλη ενεργεια γίνεται με τη βάση. Δοκίμασα τον παρακάτω τρόπο όμως δεν έπιασε. Έκανα trap το StateChange event και έγραψα εκει μέσα τον κώδικα που ήθελα. Του είπα λοιπόν αν βρει ανοιχτή την σύνδεση με τη βάση να εκτελέσει τον ένα Command στην βάση, όμως αυτό δεν έπιασε...

            private void mdbConnection_StateChange(object sender, StateChangeEventArgs e)
            {           
                SqlConnection conHelp = new SqlConnection(mdbConnection.ConnectionString);
                   
                if ( e.CurrentState == ConnectionState.Open  )
                {
                       
                    SqlCommand cmd = new SqlCommand(cmdS ,conHelp);
                    SqlCommand cmd2;
                       
                    conHelp.Open();
                    using (dr = cmd.ExecuteReader())
                    {
                        while (dr.Read())
                        {
                                //Εκτέλεση ενός command
                            cmd2 = new SqlCommand(stringCmd,conHelp);
                            cmd2.ExecuteNonQuery();                           
                        }           
                           
                    }
                    conHelp.Close();
                }
        }


    Θα πρέπει να πω εδώ ότι το Connection που χρησημοποιώ σε όλο το πρόγραμμα δεν είναι το conHelp που εμφανίζεται παραπάνω αλλά ενα άλλο. Το conHelp είναι ένα δεύτερο Connection το οποίο το χρησημοποίησα μιας και δεν ήθελα το Event StateChange να πιάνει οποιαδήποτε ενέργεια. Από τον παραπάνω κώδικα λοίπουν κάποιες γραμμές οι οποίες όμως δεν είναι σημαντικές (καποια strings etc.)

    Ξέχασα να πω ότι το όλο πρόγραμμα είναι γραμμένο σε .ΝΕΤ 1.1

    Only two things are infinite, the universe and the human stupidity, and I'm not sure about the former.

    Albert Einstein - US (German-born) physicist (1879 - 1955)
  •  08-05-2006, 12:31 12383 σε απάντηση της 12381

    Απ: Εκτέλεση Command πριν το Command

    Δεν ξέρω ακριβώς με ποιόν τρόπο υλοποιείς τον κώδικά σου, αλλά αφού έχεις ένα αντικείμενο να χειρίζεται κάθε ενέργεια με τη βάση σου, φαντάζομαι θα του έχεις φτιάξει και μέθοδο -ή property- για να εκτελεί commands.

    Μπορείς, λοιπόν, αντί να ψάχνεις αν έγινε - ή αν γίνεται - αλλαγή στη βάση, να βάλεις τον κώδικα που θέλεις σε εκείνο το σημείο του κώδικα, πριν την εκτέλεση της - εκάστοτε - command!

    Έτσι, καί πιο ευανάγνωστος θα είναι ο κώδικάς σου, καί θα σου διευκολύνει το debugging.

     

  •  08-05-2006, 13:00 12386 σε απάντηση της 12383

    Απ: Εκτέλεση Command πριν το Command

    Ναι αυτό όντως μπορεί να γίνει, απλά επειδή το Class αυτό έχει καμμιά κατοσταριά Functions ( το κάθε ένα καλέι κάποια SP με παραμέτρους) δεν έχω όρεξη να πάω να τις αλλάξω όλες. Ήθελα να δω αν υπάρχει κανένας πιο αυτοματοποιημένος τρόπος.
    Only two things are infinite, the universe and the human stupidity, and I'm not sure about the former.

    Albert Einstein - US (German-born) physicist (1879 - 1955)
  •  09-05-2006, 13:28 12437 σε απάντηση της 12386

    Απ: Εκτέλεση Command πριν το Command

    Νομίζω οτι η καλύτερη λύση, είναι να προσθέσεις μια μέθοδο η οποία παίρνει παραμέτρους το όνομα της SP, τις παραμέτρους που θές να περάσεις κτλ κτλ οπότε θα έχει ένα μοναδικό κεντρικό σημείο απο το οποίο περνούν όλες οι κλήσεις στη βάση, και εκεί πλέον κάνεις αυτό που συνέστησε και ο Evangelos.

    "A classic case for refactoring" ... :P
    Angel
    O:]
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems