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

 

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

Αλλαγή του ConnectionString?

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

    Αλλαγή του ConnectionString?

    Καλησπέρα σε όλους.

    Η ερωτησή μου ειναι πως μπορώ να αλλάξω το connection string που χρησιμοποιώ στο project μου,
    έτσι ώστε να μπορείς αν αλλάξει PC ο SQL Server να μπορεί να συνεχίζει να παίζει το πρόγραμμα κανονικά.
    Δουλεύω με DataSets.

    Ευχαριστώ.

  •  03-03-2009, 08:07 48828 σε απάντηση της 48824

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

    Το connection String σου βρίσκεται στο web.config αρχείο σου και είναι plain text. Αρα, μπορείς, διατηρώντας το όνομα (π.χ. NorthwindConnectionString), να αλλάξεις τα credentials και το όνομα του server/database ωστε να μιλάει με άλλη βάση.

    Υπάρχουν κάποια bugs στον designer των datasets που ενδέχεται να σε ενοχλήσουν. Ενα από αυτά είναι οτι ορισμένες φορές φαίνεται να μην δέχεται το connection string που βρίσκεται στο web.config αλλά να παίρνει δικό του, hardcoded connection string. Δεν θυμάμαι τώρα (ειναι και πολύ πρωι!) υπό ποιές συνθήκες συμβαίνει αυτό, αλλά θα μπορούσαν να μας διαφωτίσουν τα υπόλοιπα μέλη.

    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  03-03-2009, 08:09 48829 σε απάντηση της 48828

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

    Αργκ. Ζητώ συγνώμη για το out of time and space μήνυμά μου. Πρωι είναι όπως είπα, νυσταγμένος είμαι, διάβασα "webforms" και όχι "winforms". Ακυρο. Συγνώμη.


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  03-03-2009, 12:17 48831 σε απάντηση της 48824

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

    αν και δεν απαντάω άμεσα σε αυτό που θες. δες αυτό το site,

    http://www.connectionstrings.com/
    Νικόλαος Καντζέλης
    BSc, MSc, MCAS, MCPD, MCITP, MCTS,MCP, MCT
    http://www.nksolutions.gr
    http://dotnetstories.wordpress.com
    http://weblogs.asp.net/dotnetstories
    http://forum.dotnetnuke.gr
  •  03-03-2009, 12:33 48832 σε απάντηση της 48824

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

    Και για τις WinForms εφαρμογές ισχύουν όσα σου είπε ο Σωτήρης. Το  ConnectionString είναι plain text και μπορείς να το πάρεις από το configuration αρχείο της εφαρμογής σου, να το προβάλεις σε ένα textbox να κάνεις τις αλλαγές και να το αποθηκεύσεις ξανά. Βέβαια, αυτός ο απλοϊκός τρόπος μπορεί να σου δημιουργήσει προβλήματα αν γίνει κάποιο λάθος στην πληκτρολόγηση.

    Πιο σίγουρη μέθοδος είναι να δημιουργήσεις έναν ConnectionStringBuilder με ένα PropertyGrid. Η όλη διαδικασία είναι κάπως έτσι:

    using System.Configuration; // Απαραίτητο

    SqlConnectionStringBuilder conStrBuilder = new SqlConnectionStringBuilder();
    System.Configuration.Configuration config;

    config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    conStrBuilder = new SqlConnectionStringBuilder(config.ConnectionStrings.ConnectionStrings["MyApplication.Properties.Settings.MyApplicationConnectionString"].ConnectionString);

    this.connPropertyGrid.SelectedObject = this.conStrBuilder;

    Αφού καθοριστεί η νέα τιμή του ConnectionString μέσα από το PropertyGrid ακολουθείς την αντίστροφη διαδικασία για να το αποθηκεύσεις:

    config.ConnectionStrings.ConnectionStrings["MyApplication.Properties.Settings.MyApplicationrConnectionString"].ConnectionString = conStrBuilder.ConnectionString;

    config.Save(ConfigurationSaveMode.Modified);

    Για περισσότερες πληροφορίες όσον αφορά την ConnectionStringBuilder Class και το PropertyGrid Control δες εδώ κι εδώ. Τώρα, όσον αφορά το ίδιο το ConnectionString και τις ιδιότητές του ρίξε μια ματιά σ' αυτό το άρθρο. Αυτό που θα βρεις ενδιαφέρον, είναι ότι μπορείς ν' αλλάξεις την τιμή του DataDirectory σε ό,τι θες εσύ. Δε μπαίνω σε συζητήσεις του τύπου "που πρέπει να βρίσκεται η βάση δεδομένων μου". Απλά σου δείχνω τις επιλογές σου.


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

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

    Εάν ως server name βάλεις (local) δεν νομίζω να έχεις πρόβλημα. Δηλαδή στο connection string στο config αρχείο να έχεις (local).
  •  03-03-2009, 14:33 48835 σε απάντηση της 48834

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

    @pap : Man, αν η εφαρμογή σου πρέπει να παίξει απο 2 υπολογιστές και πάνω?

    @Markos: Τώρα υλοποιώ την δικιά σου πρόταση. Παιδευτηκα κι εγώ χθές με κάποια πράγματα που
    βρήκα για τον ConfigurationManager αλλά δεν έβγαλα άκρη. Με τον SqlStringBuilder το δοκιμάζω τώρα.

    [EDITED]

  •  03-03-2009, 14:40 48836 σε απάντηση της 48835

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

    Σωστά, δεν κατάλαβα καλά.

  •  03-03-2009, 15:42 48837 σε απάντηση της 48836

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

    Marko, για πές μου αν μπορείς για το σώσιμο του ConnectionString δεν βγάζω άκρη.
    Σου δείχνω τον κώδικα που έβαλα, αυτόν που υπέδειξες δηλαδή.

    private System.Windows.Forms.PropertyGrid connPropertyGrid;
    SqlConnectionStringBuilder conStrBuilder = new SqlConnectionStringBuilder();
    Configuration config;

    private void ChangeConnectionString()
    {
    connPropertyGrid = new PropertyGrid();

    config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    conStrBuilder = new SqlConnectionStringBuilder( config.ConnectionStrings.ConnectionStrings["Practise.Properties.Settings.NorthwindConnectionString"].ConnectionString);

    this.connPropertyGrid.SelectedObject = conStrBuilder;
    this.txtBoxConnString.Text = this.connPropertyGrid.SelectedObject.ToString();
    }

    private void AcceptConnectionString(string connString)
    {
    config.ConnectionStrings.ConnectionStrings["Practise.Properties.Settings.NorthwindConnectionString"].ConnectionString =
    conStrBuilder.ConnectionString;
    config.Save(ConfigurationSaveMode.Modified);
    }


  •  03-03-2009, 15:48 48838 σε απάντηση της 48837

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

    Το TextBox τι το θέλεις;

    Update:

    Το PropertyGrid είναι control. Πρόσθεσέ το στο ToolBox με "Choose Items...". Στη συνέχεια "ρίξε" το πάνω στη φόρμα σου, όπως γίνεται με κάθε άλλο control, και μετά "δέσε" απάνω του τον ConnectionStringBuilder. Στη συνέχεια κάνε editing στις properties "Data Source" και "AttachDBFilename" (και στις στις δύο ή σε όποια χρειάζεται). Όλ' αυτά, πάνω στο PropertyGrid. Στη συνέχεια, αποθήκευσε τη νέα τιμή του ConnectionString στο config file και τελείωσε! Επίσης, μπορείς να κάνεις editing σε όποιαδήποτε άλλη property θέλεις, όπως για παράδειγμα το "Connect Timeout" κ.λπ. Όλες αυτές οι αλλαγές που κάνεις εμφανίζονται στο "ConnectionString" Property που εμφανίζεται στο PropertyGrid Control.


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

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

    Ήθελα να δώ το ConnectionString. Δεν μπορώ να το αλλάξω και να του δώσω την τιμή του TextBox.Text απ' ευθείας?
    Θα πρέπει να ακολουθήσω connStrBuilder["Data Source"] κτλ ?

  •  03-03-2009, 16:10 48841 σε απάντηση της 48840

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

    Sorry. Δε σε πρόλαβα. Σε παραπέμπω στο edited κομμάτι της προηγούμενης απάντησης...
    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  03-03-2009, 19:25 48846 σε απάντηση της 48841

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

    Μάρκο, όλα οκ, το ποιάσα το concept, αλλά το save αν και δεν βγάζει κάποιο exception, και σε runtime
    φένεται να κρατάει τις αλλαγές που κάνω, αν κλείσω και ανοίξω την εφαρμογή γυρνάει πίσω πάλι.
    oυσιαστικά δεν έκανε save.

  •  03-03-2009, 20:24 48848 σε απάντηση της 48846

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

    gtas:
    Μάρκο, όλα οκ, το ποιάσα το concept, αλλά το save αν και δεν βγάζει κάποιο exception, και σε runtime
    φένεται να κρατάει τις αλλαγές που κάνω, αν κλείσω και ανοίξω την εφαρμογή γυρνάει πίσω πάλι.
    oυσιαστικά δεν έκανε save.

    Δεν καταλαβαίνω... Μάλλον το ανάποδο έπρεπε να συμβαίνει μιας και δεν καλείται η RefreshSection (δική μου παράλειψη). Μετά το Save συμπλήρωσε την παρακάτω σειρά:

    ConfigurationManager.RefreshSection(config.ConnectionStrings.SectionInformation.Name);

    Αφού αποθηκεύσεις και κλείσεις την εφαρμογή, ρίξε μια ματιά στο MyApplication.exe.config αρχείο να δεις αν αποθηκεύτηκε η νέα τιμή του ConnectionString. Δες εδώ πληροφορίες για τη δομή του και που θα το βρεις.

    Δε μου περνάει κάτι από το μυαλό. Ίσως κάποιος άλλος μπορεί να βοηθήσει περισσότερο. Πάντως καλού - κακού ανέβασε λίγο κώδικα...


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

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

    Την ResfreshSection την είδα στα documentation αλλα δεν την θεώρησα αναγκαία. Πάντως η προσέγγιση με το PropertyGrid παρα πολύ καλή.
    Thanx που την μοιράστηκες μαζί μας. :D
    Σας δείχνω τον κώδικα:

    SqlConnectionStringBuilder conStrBuilder = new SqlConnectionStringBuilder();
    Configuration config;

    private void ChangeConnectionString()
    {
    config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    conStrBuilder = new SqlConnectionStringBuilder(
    config.ConnectionStrings.ConnectionStrings["Practise.Properties.Settings.NorthwindConnectionString"].ConnectionString);

    this.connPropertyGrid.SelectedObject = conStrBuilder;
    }

    private void AcceptConnectionString()
    {
    config.ConnectionStrings.ConnectionStrings["Practise.Properties.Settings.NorthwindConnectionString"].ConnectionString =
    conStrBuilder.ConnectionString;

    config.Save(ConfigurationSaveMode.Modified);
    ConfigurationManager.RefreshSection(config.ConnectionStrings.SectionInformation.Name);
    }


Σελίδα 1 από 2 (27 εγγραφές)   1 2 >
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems