hallo C#-user,
bin neu hier und versuche zu erfahren, ob der folgende code-block nicht einfacher gestaltet werden kann???
der sinn des codes ist, die eingabe eines "benutzernamens" und eines "kennwortes" zu prüfen. beide informationen befindet sich in einer "mysql"-database, auf die ich über den "bytefx"-mysql-provider zugreife.
methoden wie "myLib." oder "ProgInfo1" stammen aus selbstgeschriebenen klassen. da ich keine steuerelement zur anzeige der daten aus der datenbank verwende, habe ich halt versucht, die werte aus der SELECT-anweisung in einem array zu speichern und dann abzufragen...
funktioniert hervorragend, doch es ist leider ziemlich viel code für so wenig funktionalität. geht das nicht einfacher ???
<PRE>
// ***********************************//
// Button "btnOK"
// ***********************************//
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);
}
}
</PRE>
bin neu hier und versuche zu erfahren, ob der folgende code-block nicht einfacher gestaltet werden kann???
der sinn des codes ist, die eingabe eines "benutzernamens" und eines "kennwortes" zu prüfen. beide informationen befindet sich in einer "mysql"-database, auf die ich über den "bytefx"-mysql-provider zugreife.
methoden wie "myLib." oder "ProgInfo1" stammen aus selbstgeschriebenen klassen. da ich keine steuerelement zur anzeige der daten aus der datenbank verwende, habe ich halt versucht, die werte aus der SELECT-anweisung in einem array zu speichern und dann abzufragen...
funktioniert hervorragend, doch es ist leider ziemlich viel code für so wenig funktionalität. geht das nicht einfacher ???
<PRE>
// ***********************************//
// Button "btnOK"
// ***********************************//
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);
}
}
</PRE>
Comment