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

 

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

Εφαρμογή που δουλέυει Mysql και sqlserver ???

Îåêßíçóå áðü ôï ìÝëïò jimvakakis. Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 07-09-2007, 19:23. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  07-09-2007, 02:01 34829

    Εφαρμογή που δουλέυει Mysql και sqlserver ???

    Έχω φτίαξει μια εφαρμογή που δουλέυει με MySql και θέλω να την κανω να δουλέυει και με Sql Server.

    Το πρόβλημα είναι οτι στον κώδικα μου χρισημοποιώ π.χ mysqlDataAdapter και ο Sql Server έχει SqlDataAdapter!

    Πρεπει αναγκαστικά να έχω αλλο project (αλλο κωδικα) για καθε βάση?? Υπάρχει καποιος τρόπος να παρακάμψω αυτό το πρόβλημα??

    Ευχαριστώ!


    JIMAROS
  •  07-09-2007, 08:52 34833 σε απάντηση της 34829

    Απ: Εφαρμογή που δουλέυει Mysql και sqlserver ???

    Μια λύση που μπορώ να σκεφτώ έτσι γρήγορα είναι να φτιάξεις μια κλάση Datadapter στην οποία ανάλογα με το Configuration μέσα θα καλεί είτε το SqlDataAdapter είτε το mysqlDataAdapter.
    Και μέσα στον κωδικά σου θα καλείς πάντα αυτή (Datadapter) οπότε δεν χρειάζεται να ξέρει τη βάση έχεις.
    Ίσως να κάνεις τη κλάση πιο γενική ώστε να περιλαμβάνει όλα τα dataobjects που μπορεί να χρησιμοποιείς (π.χ. sqlconnection, sqlreader,sqlcommand ....)

    Manos
  •  07-09-2007, 09:22 34838 σε απάντηση της 34829

    Απ: Εφαρμογή που δουλέυει Mysql και sqlserver ???

    O MySqlDataAdapter κληρονομεί από τον System.Data.Common.DbDataAdapter. Ομοίως η MySqlConnection υλοποιεί το IDbConnection κλπ. Θα πρέπει λοιπόν στον κώδικά σου να δουλεύεις με τον "μέγιστο κοινό διαιρέτη" των db clients που χρησιμοποιείς, ώστε να είσαι ανεξάρτητος από τη βάση σου. Και θα πρέπει βέβαια να έχεις ένα κεντρικό σημείο που ανάλογα με το είδος της βάσης γεννά data adapters, commands κλπ., ένα factory δηλαδή. Όλα αυτά θα τα βρεις έτοιμα στο Data Access Block της Enterprise Library.
    Νατάσα Μανουσοπούλου
  •  07-09-2007, 19:23 34857 σε απάντηση της 34829

    Απ: Εφαρμογή που δουλέυει Mysql και sqlserver ???

    Στο ADO.NET 2.0 ο προτεινόμενος τρόπος είναι να χρησιμοποιείς κλάσεις όπως η DbCommand, DbDataAdapter αντί για τις αντίστοιχες κλάσεις της κάθε βάσης. Τις κλάσεις αυτές τις δημιουργείς μέσω  μίας κλάσης DbProviderFactory. Τέλος, ορίζεις την βάση που θα χρησιμοποιήσεις στο app.config. Έτσι μπορείς να γράψεις κώδικα ο οποίος δεν εξαρτάται από κάποια βάση. Για παράδειγμα, για να δημιουργήσεις ένα DbConnection γραφεις:

    DbProviderFactory factory =
    DbProviderFactories.GetFactory(providerName);

    DbConnection connection = factory.CreateConnection();
    connection.ConnectionString = connectionString;

    Δες το MSDN και συγκεκριμένα το Working with a DbAdapter. Ένας λόγος πάντως που οι εφαρμογές για MySQL δεν χρησιμοποιούσαν παλιότερα αυτό το μοντέλο ήταν και ότι ο MySql Connector/NET 1.0 δεν υποστήριζε ADO.NET 2.0, αν και αυτό δεν το πολυαναφέρανε στο site. Ο 5.0 το υποστηρίζει, οπότε δεν θα πρέπει να έχεις πρόβλημα.

    Αν πάντως η εφαρμογή σου είναι γραμμένη να χρησιμοποιεί παντού MySqlDataAdapter, θα πρέπει να αλλάξεις τα referenes με τα αντίστοιχα DbDataAdapter. Αν ο κώδικας είναι αλλουνού, μπορείς να του πεις μερικά λόγια. Αν είναι δικός σου .. εεεε ... το ματς το είδες χθες?


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