c# Winform ConnectionString

julnisch

Grünschnabel
Hey Freunde,

Ich bin grade bei der Planung eines neuen Projektes (c# > Winform)

In diesem Projekt verwende ich die Reporting Lib von Devexpress:
http://www.devexpress.com/Products/NET/Reporting/

Da ich die Reports im Visual Studio erstellen will muss ich eine Datenquelle (Datasource) hinzufügen.

Über Datenquellen -> hinzufügen …… es handelt sich um Mysql

Ich habe diese Datenquellen noch nie verwenden normalerweise verwende ich eine eigene Klasse aber diese kann ich in diesem Fall nicht verwenden!

Diese Datenquelle wird rein nur für die Reports verwendet.

Im Grunde ist das auch kein Problem jedoch.

Der Connection String wird entweder Hardcoded bzw in der config gespeichert!

Das ist doch unsicher oder ? Der String enthält zwangsläufig das Passwort da Mysql!

Ich hab mir überlegt die Conf zu verschlüsseln jedoch geht das nur solange die Anwendung nicht auf einem anderen Computer ausgeführt wird!

Die 2. Lösung den Connection String Hardcoded zu speichern ist auch nicht wirklich sicher oder ?

Ich würde den User gerne um das Passwort fragen! Nur ich hab einfach keine Möglichkeit gefunden den Connection String zur Laufzeit anzupassen.

Da die Variable in der conf Schreibgeschützt ist!

Lustig ist das dieses besagt Datenquellen Wizard sogar fragt ob er das Passwort im Connection String speichern soll oder ob es im Programmcode gesetzt wird!

Ich kann nur einfach nicht finden Wo und wie

Was natürlich geht ist den vom Studio genereiten Code zu ändern, macht aber keinen Sinn da sich dieser ja immer wieder neu erstellt wird!

Ich will unbedingt eine gute Lösung finden bevor ich mit dem Projekt so richtig beginne!
Ich hab schon einige Posts durchsucht und auch Google gequält aber einfach keine Lösung gefunden!
Danke für eure Hilfe!
 
Also ich hab jetzt was getestet:

Ich speichere den Connection String ohne Pass in der Config.

Ändere dann zu laufzeit die Config (Passwort dazu).
Wenn das Programm beendet wird lösche ich den String wieder!


Code:
        public static void ModifyConnectionString(string connectionString)
        {
            System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            config.ConnectionStrings.ConnectionStrings["to.config.var....."].ConnectionString = connectionString;
            config.Save(ConfigurationSaveMode.Modified);
            ConfigurationManager.RefreshSection(config.ConnectionStrings.SectionInformation.Name);
            Properties.Settings.Default.Reload();
        }

Das funktioniert aber so wirklich recht ist mir das auch nicht!

Ich hätte den Connection String lieber gar nicht in der config
lg
 
Zurück