Enige tijd geleden heb ik in een topic het advies gekregen om Databaseconnectie zaken in een class te plaatsen.
Dit heb ik ter harte genomen, en ben daar redenlijk in geslaagd.
Ik heb een class gemaakt, die o.a. een paar public strings bevat, en een public bool.
Tijdens het laden van de aplpicatie (MDI container) worden er enkele preferences uit het register gehaald, waarmee ik de publieke strings vul.
Denk daarbij aan de servernaam (SQL server), en de naam van de database.
Als de publieke bool false is, moet er ook een sql username en een sql password worden meegegeven. Indien de bool true is, wordt de connectionstring gemaakt met de windows security gegevens.
hier een uitgekleed stukje van mijn class
Echter, blijkt nu dat wanneer ik vanauit een MDI child gebrui ga maken van de class, dat deze gegevens (public strings) leeg zijn.
Nou is het op zich niet erg dat ik elke keer mijn servernaam en databsenaam uit het register moet plukken om deze opnieuw te zetten, maar ik zit een beetje met mijn sqluser en password.
Deze worden (indien de instelling "gebruik sql authentication" aanstaat) via een inlogscherm gezet in de class. Deze moeten dus statisch blijven.
Ik kan eventueel deze gegevens wel in het register schrijven en d.m.v. de CryptoGraphicLibrary deze gegevens 3DES versleutelen, maar dat vind ik een smerige houtje touwtje oplossing.
Ik heb dus gezocht op google, en kwam op de mogelijkheid om public strings static te maken.
Zoiets dus..
Echter weet ik niet of dit een nette manier is. Daar mijn Class public is, kan deze dan niet worden misbruikt.
Mijn vraag aan julie is dus: Wat is een nette(re) manier om dit soort gegevens globaal te onthouden.
Dit heb ik ter harte genomen, en ben daar redenlijk in geslaagd.
Ik heb een class gemaakt, die o.a. een paar public strings bevat, en een public bool.
Tijdens het laden van de aplpicatie (MDI container) worden er enkele preferences uit het register gehaald, waarmee ik de publieke strings vul.
Denk daarbij aan de servernaam (SQL server), en de naam van de database.
Als de publieke bool false is, moet er ook een sql username en een sql password worden meegegeven. Indien de bool true is, wordt de connectionstring gemaakt met de windows security gegevens.
hier een uitgekleed stukje van mijn class
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| using System; namespace WindowsApplication3 { /// <summary> /// Summary description for Class1. /// </summary> public class Class1 { private string strConnection = null; public string strServername = null; public string strDBname = null; public string sqluser = null; public string sqlpass = null; public bool _UseIntegratedSecurity = false; public void Connect() { if (this._UseIntegratedSecurity == false) { // We gebruiken SQL userid en pass. this.strConnection = "server=" + this.strServername + "; uid=" + this.sqluser + "; pwd=" + this.sqlpass + ";database=" + this.strDBname + ""; } else { //we gebruiken Integrated Windows Security this.strConnection = "server=" + this.strServername + "; Integrated Security = SSPI; database=" + this.strDBname + ""; } } } } |
Echter, blijkt nu dat wanneer ik vanauit een MDI child gebrui ga maken van de class, dat deze gegevens (public strings) leeg zijn.
Nou is het op zich niet erg dat ik elke keer mijn servernaam en databsenaam uit het register moet plukken om deze opnieuw te zetten, maar ik zit een beetje met mijn sqluser en password.
Deze worden (indien de instelling "gebruik sql authentication" aanstaat) via een inlogscherm gezet in de class. Deze moeten dus statisch blijven.
Ik kan eventueel deze gegevens wel in het register schrijven en d.m.v. de CryptoGraphicLibrary deze gegevens 3DES versleutelen, maar dat vind ik een smerige houtje touwtje oplossing.
Ik heb dus gezocht op google, en kwam op de mogelijkheid om public strings static te maken.
Zoiets dus..
C#:
1
2
3
4
5
6
| private string strConnection = null; public static string strServername = null; public static string strDBname = null; public static string sqluser = null; public static string sqlpass = null; public static bool _UseIntegratedSecurity = false; |
Echter weet ik niet of dit een nette manier is. Daar mijn Class public is, kan deze dan niet worden misbruikt.
Mijn vraag aan julie is dus: Wat is een nette(re) manier om dit soort gegevens globaal te onthouden.