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

 

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

Αλλαγή του ConnectionString?

Îåêßíçóå áðü ôï ìÝëïò Τάσκος Γιώργος. Τελευταία δημοσίευση από το μέλος Markos στις 06-03-2009, 11:45. Υπάρχουν 26 απαντήσεις.
Σελίδα 2 από 2 (27 εγγραφές)   < 1 2
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  03-03-2009, 21:33 48855 σε απάντηση της 48854

    Απ: Αλλαγή του ConnectionString?

    Εντάξει ο τρόπος δουλεύει.
    Ευχαριστώ πολυ Μάρκο!

    Απλά για να το δεις να δουλεύει πρέπει να τρέξεις το project από το .exe.
    Μέσα απο το Visual Studio δεν παίζει. Δεν αλλάζει δηλαδή το app.config του
    solution.

    Credits @ Yannis Blougouras....

    Ευχαριστώ :D

  •  03-03-2009, 21:38 48857 σε απάντηση της 48854

    Απ: Αλλαγή του ConnectionString?

    Έριχνα μια ματιά στο ConfigurationUserLevel enumeration. Ρϊξε κι εσύ μήπως η απάντηση είναι εκεί. Κοίταξες τι συμβαίνει με το .config αρχείο που σου είπα; Πρέπει να βρίσκεται στο directory της εφαρμογής:

    "Application configuration files are in the same directory as the application and have the same name, but with a .config extension. For example, the configuration file for C:\System\Public.exe is C:\System\Public.exe.config."


    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  03-03-2009, 22:17 48859 σε απάντηση της 48854

    Απ: Αλλαγή του ConnectionString?

    Παιδιά, μήπως το κάνατε υπερβολικά περίπλοκο το θέμα? Όλα όσα συζητάτε ως τώρα έρχονται ως out-of-the-box λειτουργίες στο .ΝΕΤ 2.0  οι οποίες υλοποιούνται με 2-3 γραμμές κώδικα. Για παράδειγμα, αν προσθέσετε ένα Connection String ονόματι MyConnection στα Settings της εφαρμογής, μπορείτε να το ξαναδιαβάσετε με την Properties.Settings.Default.MyConnection. Το Visual Studio έχει ακόμα και designer γι αυτή τη δουλειά, οπότε δεν τίθεται θέμα να γίνει λάθος κατά την πληκτρολόγηση.

    Όσον αφορά το πως να σώσεις τα settings, κατά κανόνα ΔΕΝ πρέπει να πειράζεις application-level settings. Οι τιμές στο exe.config αποθηκεύονται στο ίδιο folder με την εφαρμογή, όπου ο απλός χρήστης ΔΕΝ έχει δικαίωμα να γράψει και πρέπει να ορίζονται από τον administrator ή κατά την εγκατάσταση της εφαρμογής. Τα settings των διαφόρων χρηστών ορίζονται ξεχωριστά, ως user-level settings και αποθηκεύονται στο folder του χρήστη, όπου μόνο αυτός έχει δικαίωμα να τα διαβάσει και να τα πειράξει.  Μπορείτε πάλι από τα Settings να ορίσετε ότι κάποια settings είναι user-level και όχι application-level και να τα αποθηκεύσετε ανά χρήστη. Οι αλλαγές αποθηκεύονται με ένα απλό Properties.Settings.Default.Save();

    Για να δείτε πως δουλεύει το configuration στο .ΝΕΤ κοιτάξτε καταρχήν το Using Application Settings and User Settings. Ο τρόπος ορισμού των settings περιγράφεται στο How To: Create a new setting at design time, πως να το διαβάσετε περιγράφεται στο How To: Read Settings at run-time with C# και πως να αλλάξετε τιμές στα user-level settings στο How To: Write user-settings at runtime with C#


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  03-03-2009, 22:35 48860 σε απάντηση της 48859

    Απ: Αλλαγή του ConnectionString?

    Φαντάζομαι ότι η φόρμα με το PropertyGrid είναι για τα μάτια του administrator και μόνο. Για ποιο λόγο ο χρήστης να παίξει με το ConnectionString; Εκτός του ότι με το PropertyGrid κερδίζει σε εμφάνιση, με τον τρόπο αυτό μπορεί πολύ εύκολα πριν το save να κάνει encryption στο ConnectionString με μία επιπλέον σειρά:

    config.ConnectionStrings.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");


    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  03-03-2009, 22:37 48861 σε απάντηση της 48859

    Απ: Αλλαγή του ConnectionString?

    Αν όμως δημιουργήσεις κάποιο DataSet με wizard δεν σε αφήνει να διαλέξεις  User-Level connection string.
    To connection string που χρησιμοποιεί το κάνει αναγκαστικά Application-Level και δεν αλλάζει.
    Θα ήταν πανεύκολο όπως λες κι εσύ. Τουλάχιστον προσωπικά εγώ δεν ήξερα κάποιον άλλο τρόπο
    για το επίπεδο των γνώσεων μου. Αν μπορείς ας πούμε να επέμβεις στο connection string που χρησιμοποιεί
    ο wizard δημιουργίας DataSet και να το κάνεις User-Level.

    Θα τα δούμε και τα Links φυσικά.

  •  03-03-2009, 22:48 48862 σε απάντηση της 48861

    Απ: Αλλαγή του ConnectionString?

    Μπορείς να αντιγράψεις το connection string σε ένα user-level string property.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  03-03-2009, 22:52 48863 σε απάντηση της 48862

    Απ: Αλλαγή του ConnectionString?

    Και που θα με ωφελήσει?

  •  03-03-2009, 22:53 48864 σε απάντηση της 48861

    Απ: Αλλαγή του ConnectionString?

    Ναι, αυτό είναι ένα πρόβλημα όταν χρησιμοποιείς τον Wizard. Ο κάθε TableAdapter έχει το δικό του Connection object και θα πρέπει να εισάγεις την τιμή του ConnectionString για τον κάθε έναν TableAdapter ξεχωριστά. Καθόλου πρακτική λύση...


    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  03-03-2009, 22:57 48865 σε απάντηση της 48864

    Απ: Αλλαγή του ConnectionString?

    Νομίζω ότι το scope της συζήτησης αρχίζει και χάνεται απο εδώ και πέρα,
    χρειάζομαι μελέτη τώρα για να μπορέσω να αναπτύξω προσωπικά τέτοια συζήτηση!

    Ευχαριστώ.

  •  06-03-2009, 01:40 48938 σε απάντηση της 48863

    Απ: Αλλαγή του ConnectionString?

    Ψάχνοντας για κάτι άλλο, έπεσα σ' αυτό το πολύ ενδιαφέρον video. Δείχνει πως μπορούμε ν' αλλάξουμε το ConnectionString κατά το Runtime. Εν συντομία, μπορούμε να πάμε να ορίσουμε ένα user scope setting (type of string) να εισάγουμε την τιμή του "User" ConnectionString και εκμεταλλευόμενοι το SettingsLoaded event της Settings Class να ορίσουμε την τιμή του ConnectionString που θέλουμε εμείς. Τόσο απλά...

    void Settings_SettingsLoaded(object sender, System.Configuration.SettingsLoadedEventArgs e)
    {
       this["TaxonomyConnectionString"] = this.MyConnectionString;
    }

    Το "TaxonomyConnectionString" είναι το όνομα του application scope setting που αντιστοιχεί στο Design Time ConnectionString. Το "MyConnectionString" είναι το user scope string. Cool!!

    Βέβαια, το θέμα είναι που μπορεί να χρειαστεί ο απλός χρήστης το ConnectionString, αλλά δουλεύει!! Μόνο που έτσι χρειάζεται λίγο περισσότερο κώδικας για να δουλέψουμε με τον ConnectionStringBuilder και το PropertyGrid.


    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  06-03-2009, 10:20 48948 σε απάντηση της 48938

    Απ: Αλλαγή του ConnectionString?

    Δεν μπορώ να πω ότι κατάλαβα τί προτείνεις. Και το ένα και το άλλο setting είναι απλά strings. Και τα δύο είναι διαθέσιμα μέσω του My.Settings στην VB.NET ή του Settings.Default στην C#, με τον ίδιο ακριβώς τρόπο. Μπορείς άνετα να δώσει όποιο από τα δύο connection strings θέλεις, και όποιο άλλο θέλεις να χρησιμοποιήσεις, στον TableAdapter που θα φορτώσει το dataset σου. Το connection string με μία βάση σχεδόν ποτέ δεν αλλάζει ανά χρήστη - εκτός και αν η εφαρμογή κάνει κάτι πολύ περίεργο, όπως να αποθηκεύει username/password για κάθε χρήστη στο connection string, αντί να τα ζητάει από το χρήστη.

    Οπότε, τί νόημα έχει ο παραπάνω κώδικας?


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  06-03-2009, 11:45 48950 σε απάντηση της 48948

    Απ: Αλλαγή του ConnectionString?

    Μπορεί ν' αλλάξει κατά το runtime το ConnectionString και η αλλαγή αυτή περνάει σε όλους τους TableAdapters, χωρίς να χρειάζεται να το κάνει στο Connection object του καθενός ξεχωριστά.


    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
Σελίδα 2 από 2 (27 εγγραφές)   < 1 2
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems