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

 

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

OdbcCommand και named parameters

Îåêßíçóå áðü ôï ìÝëïò dva. Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 10-05-2007, 16:46. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  10-05-2007, 13:24 31689

    OdbcCommand και named parameters

    Γειά σας,

    Προσπαθώ να εκτελέσω ένα OdbcCommand με κάποιες παράμετρους αλλά μου βγάζει πρόβλημα.

    Εχω το εξής command (προσθέτω παρακάτω τις παραμέτρους P1 και P0).

    UPDATE mytable SET myText=@P1 WHERE ID=@P0

    Αλλά όταν το εκτελώ μου βγάζει exception

    ERROR [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Must declare the variable '@P1'. 

    Αν χρησιμοποιήσω unnamed parameters, όμως μου τρέχει κανονικά.

    UPDATE mytable SET myText=? WHERE ID=?

    Μπορώ να χρησιμοποιήσω named parameters σε OdbcCommands (και πώς) ώστε αν αλλάξει το query να μην χρειάζεται να αλλάζω και τη σειρά των παραμέτρων.

    (Η βάση είναι σε SQL Server 2000).
     

  •  10-05-2007, 13:33 31690 σε απάντηση της 31689

    Απ: OdbcCommand και named parameters

    Όχι δεν μπορείς. Αυτό το υποστηρίζει μόνο ο SqlClient. Εφόσον παίζεις σε SQL Server, γιατί δεν χρησιμοποιείς SqlClient? Έχει πολλά πλεονεκτήματα η χρήση του πέρα από την υποστήριξη named parameters όπως γρηγορότερη επικοινωνία, αντιστοιχία των τύπων με αυτούς του SQL Server, κλπ.


    Vir prudens non contra ventum mingit
  •  10-05-2007, 16:46 31699 σε απάντηση της 31689

    Απ: OdbcCommand και named parameters

    Θα συμφωνήσω με τον Μανώλη. Δεν υπάρχει κανένας λόγος να χρησιμοποιεί κανείς ODBC. Μάλιστα, η Microsoft έχει πάψει να αναπτύσσει το ODBC (της Microsoft είναι) εδώ και πολλά χρόνια. Συνεπώς, είναι πάντα η πιο αργή και προβληματική λύση.

    Ο λόγος που το ODBC ακούγεται ακόμα και δεν έχει εξαφανιστεί, είναι ότι είναι το μοναδικό στάνταρ στο οποίο κατάφεραν να συμφωνήσουν οι εταιρείες βάσεων δεδομένων. Έτσι υπάρχουν ODBC drivers για όλες τις βάσεις και όλα τα λειτουργικά. Πριν από 10 χρόνια όμως, η Microsoft έβγαλε το διάδοχο του ODBC, το OLEDB το οποίο απαιτούσε την ύπαρξη Windows. Οι βάσεις που έτρεχαν σε άλλα λειτουργικά δεν ακολούθησαν τη Microsoft, με αποτέλεσμα οι βάσεις που τρέχουν σε λειτουργικά Unix και Linux να χρησιμοποιούν το ODBC ακομα και σήμερα. Επειδή όμως είναι παλιό και αργό, έχουν βγεί μερικά πολύ ακριβά "middleware" συστήματα με σκοπό να επιταχύνουν την επικοινωνία των εφαρμογών με τις βάσεις, παρακάμπτωντας όπου μπορούν το ODBC.

    Στα Windows, το OLEDB έχει αντικατασταθεί και αυτό από τους Managed Providers για .NET, οι οποίοι πετυχαίνουν ακόμα μεγαλύτερη ταχύτητα, καθώς επικοινωνούν απευθείας με τη βάση, παρακάμπτωντας το ενδιάμεσο στάδιο του OLEDB.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems