Autor Beitrag
Talemantros
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: Di 14.01.14 11:53 
Hallo zusammen,
da nun aber sicher wenigstens einige rudimentären Kenntnise von C# gut eingespielt sind, wollte ich mich an das vorerst größte Thema, den Datenbanken machen.
Dazu habe ich mir ein Tutorial durchgelesen und einige Fragen sind aufgekommen.

Hier erstmal die wichtigste für mich in der Hoffnung es kann mir einer beantworten.

lt Tutorial wird die Verbidnung zur Datenbank wie folgt aufgebaut:

ausblenden C#-Quelltext
1:
2:
3:
4:
string myConnectionString = "SERVER=localhost;" +
                            "DATABASE=mydatabase;" +
                            "UID=user;" +
                            "PASSWORD=mypassword;";


Nun würde ich aber ungern die Daten und Passwörter dafür in den Quelltext schreiben und lieber dem "Admin" der Abteilung über ein WinForm "Einstellungen" die Möglichkeiten geben dies anzupassen.

Wie geht man da sinnigerweiße vor?

Wo speichert man diese Daten?
In einer mit angelegten mdf?
In der Registry?
oder geht noch was ganz anderes was sinniger ist?

Bin da für jede Art der konstruktiven Vorschläge dankbar.

Vielen lieben Dank

Gruß
Daniel
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 14.01.14 12:04 
Passwörter speichert man nicht Passwörter werden abgefragt.
Je nach Datenbank wäre as aber nicht nötig Username, Password abzufragen sondern einfach Windowsauthentifizierung zu verwenden. Also automatisch die Credentials zu benutzen mit denen du dich bereits an Windows angemeldet hast. Ob und wie das mit deiner Datenbank geht solltest du in deren Doku nachlesen.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 14.01.14 13:04 
Hallo,

m.E. am besten innerhalb der app.config speichern, s. Configuring a Connection String in the App.Config File During Runtime in C# (wobei für dich, Talemantros, zuersteinmal nur das Anlegen und Auslesen interessant sind).
Oder in kurz: How to get Connection String from App.Config in C#.

Und ich stimme Ralf bzgl. der Windows-Authentifizierung zu.
Talemantros Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: Di 14.01.14 13:06 
Hi,
mit der Windows Authentifizierung etc muss ich mal klären.
Wie bzw. wo wollte ich die IP zum Server etc speichern?

Macht man das in einer im projekt liegenden Datenquelle oder was wäre der sinnigste "proffesionellste" Weg, wenn man dies Variable halten will?

Danke

Gruß
Daniel

EIDT:
Nach dem Speichern habe ich den Eintrag von Th69 gesehen.
Werde ich mir anschauen. Danke. Hatte sich überschnitten sry
Talemantros Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: Di 21.01.14 18:54 
Hallo,
also erstmal vielen Dank.
Dies hat mich schon mal wieder ein Stück nach vorne gebracht.

Was ich mich jetzt noch frage und ich hoffe es bedarf keinem eigenen Threat.

Wie geht man normalerweise vor:

1.) Öffnet man eine Connection beim Start der Anwendung und schickt dann zwischendrin nur die Abfragen
2.) oder ist es besser vor jeder Abfrage die Verbindung herzustellen und danach wieder zu schließen.

Macht ihr dann eine eigene Klasse für die Verbindung? bzw. weiß jemand ob man irgendwo ein rudimentäres fertiges Programm (Source Code) mit einer bestehenden Verbindung findet.
Vielleicht jeweils mit einer Select, Insert, Update und Delete Anweisung? Ist einfacher für mich wenn aus bestehendem Code lernen kann.

Vielen Dank und schönen Abend noch.

Lg
Daníel
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 21.01.14 19:04 
Die Faustformel sollte sein die Connection so spät wie möglich öffnen und so früh wie möglich wieder schließen.
Fertiger Code ist ein Problem da das was du gerne möchtest so vermutlich kaum einer macht. Insert, Updates, Deletes einzeln abfeuern gehört in die Kategorie ungewöhnlich.
Entweder es übernimmt ein ORM der die generiert und im Batch abfeuert oder man überläßt das einem DataAdapter oder Tableadapter der das im Batch für alle nötigen Insert,Update,Deletes macht.

Zeig doch einfach wie du es jetzt macht. Dann kann einer von uns zeigen wie er das entsprechend deinem Stil anders machen würde (Wenn man es den anders machen sollte).
Talemantros Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: Mi 22.01.14 10:23 
Hi Ralf,
also zeigen wie man es jetzt macht kann ich noch nicht, da ich es noch nicht gemacht habe außer in VBA :-)
Daher wollte ich vorher abstecken wie man es macht, damit es gleich "Richtig" und sinnig ist.

Im Rahmen meines lernen, habe ich jetzt mal eine mdf ins Projekt eingefügt und eine Abfrage über den TableAdapter gesetzt.
Das funktioniert auch (war erst gestern)

Muss ich dann so auch eine MYSQL auf einem Netzlaufwerk einbinden und Abfragen erstellen? Wenn ja wie kann man den die MYSQL einbinden um diesen TableAdapter zu bekommen. (Sorry für das Laienhafte ausdrücken) Habe erst im September angefangen mit C# und habe noch 3 Jobs und immer nur wenig Zeit, daher sind die Sprünge noch nicht so mächtig. :-D
Vielleicht gibt es irgendwo ein gutes Tutorial?

Habe schon mal gesucht aber noch nicht so richtig fündig geworden wo es mal von Anfang an bis "Ende" beschrieben ist.
Würde mir auch ein Buch kaufen wenn ihr eine Empfehlung habt. Dann brauch ich euch nicht als "nerven".

Gruß
Daniel
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 22.01.14 11:00 
Das mit dem Netzlaufwerk verstehe ich nicht. Bei einem serverbasierten Datenbank brauchst du einen passenden Treiber für .Net(den es bestimmt gibt) und einen passenden Connectionstring.
Dann Dataset Designer öffnen. Server Explorer öffnen und dort die Connection zu MySQL einrichten und dann zum Beispiel per Drag&Drop die Tabellen aus dem Server Explorer auf den Designer für das Dataset ziehen wenn man keine komplexeren Abfragen hat.

Für dir Ado.Net Grundlagen bietet sich zum Beispiel das Galileo OpenBook an.
Reines ADO.Net ab Kapitel 23. Tableadapter ab Kapitel 28
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 22.01.14 11:33 
Hallo Talemantros,

unter MySQL Abfrageergebnis in Variable speichern hatte ich schon mal ein paar Links zu MySQL-Tutorials gepostet.
Du brauchst für MySQL auf jeden Fall den MySQL Connector/Net.
Talemantros Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: Fr 24.01.14 10:28 
Hi ihr beiden,
jetzt habe ich das verstanden.
Sorry da war ich quer, dass beides miteinander zusammen hängt und dann nochmal dumm gefragt habe.

Habe jetzt noch ein OpenSource Projekt dazu gefunden und werde mich damit mal eingehen beschäftigen.

Ist ziemlich viel am Anfang :-)

lg
Daniel

P.S.: Ich hoffe irgendwann mal einen Durchblick zu haben und neuen im Forum dann auch helfen zu können und einiges was ich bekomme habe wieder geben zu können.
Merci und schönes Wochenende