Hallo C#-User
ich beschäftige mich seit ca. 3 Wochen mit C# und habe eine Routine erstellt, die beim Programmstart prüft, ob ein User sich korrekt angemeldet hat (Login).
Ich benutze "Visual Studio .Net", "MySql" und den "MySql-DataProvider" von ByteFX.
Da ich die Daten aus der Datenbank nicht anzeigen lassen (logischerweise), erstelle ich über das DataReader-Objekt ein Array mit den benötigten Informationen. Den Inhalt des Array´s vergleiche ich dann mit den Eingaben des Users.
Das klappt ganz wunderbar
Nur frage ich mich, da ich noch C#-Anfänger bin, ob meine Vorgehensweise so OK ist und ob das gesamte Konstrukt nicht ein wenig einfacher (sprich: weniger Code) zu gestalten wäre.
Anmerkung: Die Methoden "myLib" und "ProgInfo" stammen aus selbst-geschriebenen Klassen.
ich beschäftige mich seit ca. 3 Wochen mit C# und habe eine Routine erstellt, die beim Programmstart prüft, ob ein User sich korrekt angemeldet hat (Login).
Ich benutze "Visual Studio .Net", "MySql" und den "MySql-DataProvider" von ByteFX.
Da ich die Daten aus der Datenbank nicht anzeigen lassen (logischerweise), erstelle ich über das DataReader-Objekt ein Array mit den benötigten Informationen. Den Inhalt des Array´s vergleiche ich dann mit den Eingaben des Users.
Das klappt ganz wunderbar

Nur frage ich mich, da ich noch C#-Anfänger bin, ob meine Vorgehensweise so OK ist und ob das gesamte Konstrukt nicht ein wenig einfacher (sprich: weniger Code) zu gestalten wäre.
Anmerkung: Die Methoden "myLib" und "ProgInfo" stammen aus selbst-geschriebenen Klassen.
Code:
private void btnOK_Click_1(object sender, System.EventArgs e)
{
string mySele = "SELECT u.BenutzerName, u.Kennwort, a.Name, a.Vorname FROM " +
myLib.myDatabase + ".user AS u, " + myLib.myDatabase + ".adresse AS a " +
"WHERE (BenutzerName = '" + textBox1.Text + "') AND (Kennwort = '" + textBox3.Text + "') " +
"AND (a.AdressNr=u.AdressNr)";
myLib.StartOK = false;
MySqlCommand myCommand = new MySqlCommand(mySele, myLib.myConnect);
myLib.myConnect.Open();
ControlCheck(this, false);
try {
MySqlDataReader myReader = myCommand.ExecuteReader();
try {
bool loginOK = myReader.HasRows;
string[] myArray = new string[4];
if (loginOK) {
while (myReader.Read()) {
for (int i = 0; i < myReader.FieldCount; i++)
myArray[i] = myReader.GetValue(i).ToString();
}
loginOK = (myArray[0] == textBox1.Text) && (myArray[1] == textBox3.Text);
}
myLib.StartOK = loginOK;
if ( loginOK ) {
Close();
} else {
ProgInfo1.Hinweis("Das Kennwort ist leider falsch, Bitte versuchen Sie es erneut...");
ControlCheck(this, true);
textBox3.Focus();
}
} catch (MySqlException ex) {
ProgInfo1.Fehler(ex.Message.ToString());
} catch (Exception ex){
ProgInfo1.Fehler(ex.Message.ToString());
} finally {
myReader.Close(); myLib.myConnect.Close();
}
} catch (MySqlException ex) {
ProgInfo1.Fehler(ex.Message.ToString());
} finally {
myLib.myConnect.Close();
ControlCheck(this, true);
}
}