Autor Beitrag
pycak
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Mi 21.01.09 14:30 
Hallo,

ich versuche eine Clientsoftware zu schreiben womit ich Daten von MySQL-Server abfragen und änderen kann.
Wenn ich die Software starte dann wird erstmal eine Modale-Form geladen wo ich meine Verbindungsdaten eingeben soll.
Host:
Benutzername:
Passwort:
Port:
Datenbank:
Zusätzlich habe ich eine Speichern Button erstellt damit man bei Bedarf die Daten unter einem Verbindungsnamen speichern kann.

Frage1: wie kann ich die Verbindungsdaten zur Laufzeit speichern, so dass alle notwendigen Eingaben automatisch geladen werden sobald man Verbindungsname auswählt?

Frage2: wenn man die Verbindungsdaten in eine Datei abspeichert, wie kann man das Passwort verschlüsselt speichern???


ps.Ich hoffe ich habe mich verständlich ausgedrückt

Danke und Gruß
Pycak
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mi 21.01.09 14:40 
Hallo,

wenn Du etwas zur Laufzeit intern speichern willst (zur Wiederbenutzung an verschiedenen Stellen), muss es nicht in einer Datei stehen, sondern eine (beliebig strukturierte) Klasse genügt. Wenn Du es zur späteren Wiederverwendung speichern willst, passt (je nach Situation) die app.config oder die user.config.

Vom Prinzip her ist die app.config als read-only angelegt (d.h. nur der Administrator schreibt dort während der Installation etwas hinein). Unter WinXP kann sie auch zur Laufzeit geändert werden, siehe z.B. Read/Write App.Config File with .NET 2.0.

Verschlüsselung ist natürlich möglich. Im System.Security.Cryptography-Namespace bekommst Du viele Varianten vorgesetzt.

Gruß Jürgen
pycak Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Mi 21.01.09 15:18 
app.conf habe ich mir auch überlegt

ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
    <userSettings>
        <NO_Schichtplansoftware.Properties.Settings>
            <setting name="Verbindung" serializeAs="String">
                <value>test</value>
            </setting>
        </NeueVerbindung.Properties.Settings>
    </userSettings>


ich will mehrere <values> unter einem Namen abspeichern, schreibt man alles in ein großen String den man später Splitet oder wie macht man da am einfachsten?

Moderiert von user profile iconChristian S.: C#- durch XML-Tags ersetzt
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mi 21.01.09 19:07 
Dazu eignet sich StringCollection als Typ der Einstellung.

_________________
>λ=
J.D.
Hält's aus hier
Beiträge: 11

Vista/XP
.NET C#
BeitragVerfasst: Mi 28.01.09 14:56 
Wenn das Thema noch relevant ist :D Ich würde alles in eine Datei Speichern, das Passwort mit System.Security.Cryptography verschlüsseln und mittels Split-Methode einlesen.msdn.microsoft.com/e...ng.split(VS.71).aspx

MFG

J.D.
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mi 28.01.09 15:32 
Hallo,

ich würde für deine Eingabemaske ein entsprechendes Daten-Objekt anlegen. Dieses Objekt hält die notwendingen Informationen (Host, Benutzername, Password, ...). Das Form würde ich dafür verwenden, die entsprechenden Feldern anzuzeigen (DataBinding). Ziemlich einfache Methode um Daten anzuzeigen und zu bearbeiten :)

Beim Speichern serialisieren du das Objekt, verschlüsselst den output und speicherst es ab. Beim Laden geschieht alles umgekehrt: Profil (Datei) auswählen, Passwort eingeben, entschlüsseln, deserialisieren und dem Verbindungsform zuweisen. Wenn du viel Profile verwenden willst würde es sich noch einen "Profil-Container" anbieten. Bei dem könntest du auch hinterlegen, ob die Daten des jeweiligen Daten-Objekt verschlüsselt abgelegt sind oder nicht.

Gruß, Daniel
pycak Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Mi 28.01.09 19:49 
Vielen Dank an alle, ich habe das Problem gelöst.
Ich speicher alle Daten in eine einzige String in user.config(zwischen den Daten füge ich "$" ein).
Wenn ich die Daten wieder brauche trenne ich diese durch String.Splite-Methode.

Mfg
Sergej