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

 

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

Πρόβλημα κατά την εκτέλεση Oracle OleDbCommand με παραμέτρους σε C#.

Îåêßíçóå áðü ôï ìÝëïò JohnieG. Τελευταία δημοσίευση από το μέλος JohnieG στις 15-03-2011, 10:02. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  14-03-2011, 16:37 64199

    Πρόβλημα κατά την εκτέλεση Oracle OleDbCommand με παραμέτρους σε C#.

    Καλησπέρα,
      Αντιμετωπίζω ένα πρόβλημα στη προσπάθεια μου να εκτελέσω ένα Select Command με 2 παραμέτρους χρησιμοποιώντας μια OleDbCommand και συνδεόμενος σε μια βάση Oracle 11g. Ενώ εξακριβώνω ότι οι παράμετροι μου έχουν τις τιμές που θέλω να περάσω, παρόλα αυτά παίρνω ένα μύνημα ORA-01008 : Not all variables bound. Στην αρχή, ελέγχοντας το Select Command έβλεπα ότι στη θέση των παραμέτρων υπήρχε το απόλυτο κενό. Τώρα, φαινομενικά εντελώς ξαφνικά, τα ονόματα των παραμέτρων δεν μεταφράζονται μέσα στο command text αλλά παραμένουν τα ίδια. Πιθανότατα μέσα στη θολούρα που μου έχει προκαλέσει αυτό το θέμα κάτι δεν προσέχω, αλλά τί; Crying
    Παρακάτω παραθέτω το σχετικό κώδικα:

                OleDbCommand command3 = new OleDbCommand();

                command3.Parameters.Add("fDate", OleDbType.DBTimeStamp);
                command3.Parameters["fDate"].Value = Convert.ToDateTime(this.DATE_APO.Value);
                command3.Parameters.Add("tDate", OleDbType.DBTimeStamp);
                command3.Parameters["tDate"].Value = Convert.ToDateTime(this.DATE_EOS.Value);

                command3.CommandText = "Select ........... Where rec_datetime >= :fDate And t.rec_datetime <= :tDate ";
                command3.Connection = conn;

                command3.ExecuteReader();

    Οποιαδήποτε ιδέα ή πρόταση είναι ευπρόσδεκτη!
    Σας ευχαριστώ εκ των προτέρων...

    Υ.Γ.: Παρέλειψα το Select Statement του CommandText ως μη ουσιαστικό ως προς τη λύση του προβλήματος μου. Εννοείται ότι το έχω δοκιμάσει και εκτός από το θέμα των παραμέτρων είναι απόλυτα λειτουργικό.

    Always Look On The Bright Side Of Life...
  •  14-03-2011, 20:42 64200 σε απάντηση της 64199

    Απ: Πρόβλημα κατά την εκτέλεση Oracle OleDbCommand με παραμέτρους σε C#.

    Αν θυμάμαι καλά, o OLEDB Provider θέλει απλά ? αντί για τα ονόματα των παραμέτρων και ταιριάζει τιμές με ? με βάση τη σειρά. Πρέπει να χρησιμοποιήσεις τον Oracle provider για να μπορέσεις να χρησιμοποιήσεις παραμέτρους με το όνομα τους.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  15-03-2011, 10:02 64210 σε απάντηση της 64200

    Απ: Πρόβλημα κατά την εκτέλεση Oracle OleDbCommand με παραμέτρους σε C#.

    Ντρέπομαι που θα το πω αλλά τα εμφανή μερικές φορές είναι τα πιο εκνευριστικά!!! Εξηγούμαι.....
      Την πληροφορία για το ? την είχα υπόψην μου. Έκανα το λάθος όμως να υποθέσω ότι το ? θα αντικατασταθεί μέσα στο CommandText και μέσω του Debugger θα μπορώ να δώ το πλήρες SQL Statemet συμπεριλαμβανομένων των τιμών μεταβλητών μου. Ατυχές συμπέρασμα!!!
      Το CommandText περιλαμβάνει εμφανώς τα ? τα οποία αντικαθιστούνται κατά την εκτέλεση του command. Φυσικά και λειτουργεί άψογα αλλά δεδομένου του λανθασμένου συλλογισμού μου δεν έφτασα ποτέ στο σημείο να το εξακριβώσω παρά σταματούσα κάθε απόπειρα βλέποντας τα ? μέσα στο CommandText θεωρώντας ότι είχα αποτύχει!!!
      Τέλος καλό αλλά εκνευριστικό εξαιτίας του άστοχου συλλογισμού μου και της μικρής μου εμπειρίας στο Visual Studio!!!
      Όπως και να έχει ευχαριστώ για την υπόδειξη! Δεν θα το ξαναδοκίμαζα διαφορετικά κι ακόμη θα απορούσα για το τι κάνω λάθος.


    Always Look On The Bright Side Of Life...
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems