metalcat303
Grünschnabel
Halli hallo.
Ich habe mal kein Problem und trotzdem suche ich nach einem Feedback.
Ich habe in meiner WinForms-Anwendung einige SQL-Abfragen an meine Access-Datenbank erstellt. Diese funktionieren auch alle ohne Probleme.
Nun finde ich den Weg der Abfrage jedoch etwas umständlich und frage mich, ob es nicht eine viel einfachere/leichtere Lösung gibt, weil ich zig Mal neue DataReader-Instanzen erstellt habe.
Wie man sieht, werden die Ergebnisse immer in Textboxen geschrieben. Mehrfach-Ergebnisse wurden bisher auch noch nicht ausgefiltert bzw. behandelt, aber das ist im Moment nicht das Problem.
Erst mal geht es mir wirklich nur darum, ob man den langen Code vllt. irgendwie vereinfachen kann!? Diese bzw. ähnliche Abfragen werden bei verschiedenen Buttonklicks ausgelöst. Also kann man die doch sicherlich irgendwie vereinfachen, als ständig neu zu schreiben bzw. zu kopieren, oder?
Über Ideen und Vorschläge würde ich mich sehr freuen!
Ich habe mal kein Problem und trotzdem suche ich nach einem Feedback.

Ich habe in meiner WinForms-Anwendung einige SQL-Abfragen an meine Access-Datenbank erstellt. Diese funktionieren auch alle ohne Probleme.
Nun finde ich den Weg der Abfrage jedoch etwas umständlich und frage mich, ob es nicht eine viel einfachere/leichtere Lösung gibt, weil ich zig Mal neue DataReader-Instanzen erstellt habe.
Code:
OleDbConnection con = new OleDbConnection();
con.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=H:\Bibliothek.mdb";
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = con;
try
{
con.Open();
cmd.CommandText = "SELECT Titel, VerlagID, SpracheID, DatumID, MitarbeiterID FROM Buecher WHERE ISBNNr = " + "'" + txtisbn2.Text + "'";
{
OleDbDataReader rd = cmd.ExecuteReader();
while (rd.Read())
{
txttitel2.Text = Convert.ToString(rd["Titel"]);
txtverlag2.Text = Convert.ToString(rd["VerlagID"]);
txtsprache2.Text = Convert.ToString(rd["SpracheID"]);
txtdatum2.Text = Convert.ToString(rd["DatumID"]);
txtnname2.Text = Convert.ToString(rd["MitarbeiterID"]);
}
rd.Close();
cmd.CommandText = "SELECT AutorID FROM ISBNAutor WHERE ISBNNr = " + "'" + txtisbn2.Text + "'";
OleDbDataReader rd1 = cmd.ExecuteReader();
while (rd1.Read())
{
txtautor2.Text = Convert.ToString(rd1["AutorID"]);
}
rd1.Close();
cmd.CommandText = "SELECT Autor FROM Autoren WHERE ID = " + txtautor2.Text;
OleDbDataReader rd2 = cmd.ExecuteReader();
while (rd2.Read())
{
txtautor2.Text = Convert.ToString(rd2["Autor"]);
}
rd2.Close();
cmd.CommandText = "SELECT Verlag FROM Verlag WHERE ID = " + txtverlag2.Text;
OleDbDataReader rd3 = cmd.ExecuteReader();
while (rd3.Read())
{
txtverlag2.Text = Convert.ToString(rd3["Verlag"]);
}
rd3.Close();
cmd.CommandText = "SELECT MNachname, MVorname, Raum, Telefon FROM Mitarbeiter WHERE ID = " + txtnname2.Text;
OleDbDataReader rd4 = cmd.ExecuteReader();
while (rd4.Read())
{
txtnname2.Text = Convert.ToString(rd4["MNachname"]);
txtvname2.Text = Convert.ToString(rd4["MVorname"]);
txtraum2.Text = Convert.ToString(rd4["Raum"]);
txtruf2.Text = Convert.ToString(rd4["Telefon"]);
}
rd4.Close();
cmd.CommandText = "SELECT Sprache FROM Sprachen WHERE ID = " + txtsprache2.Text;
OleDbDataReader rd5 = cmd.ExecuteReader();
while (rd5.Read())
{
txtsprache2.Text = Convert.ToString(rd5["Sprache"]);
}
rd5.Close();
cmd.CommandText = "SELECT Datum FROM Erscheinungsdatum WHERE ID = " + txtdatum2.Text;
OleDbDataReader rd6 = cmd.ExecuteReader();
while (rd6.Read())
{
txtdatum2.Text = Convert.ToString(rd6["Datum"]);
}
rd6.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
con.Close();
}
}
Wie man sieht, werden die Ergebnisse immer in Textboxen geschrieben. Mehrfach-Ergebnisse wurden bisher auch noch nicht ausgefiltert bzw. behandelt, aber das ist im Moment nicht das Problem.
Erst mal geht es mir wirklich nur darum, ob man den langen Code vllt. irgendwie vereinfachen kann!? Diese bzw. ähnliche Abfragen werden bei verschiedenen Buttonklicks ausgelöst. Also kann man die doch sicherlich irgendwie vereinfachen, als ständig neu zu schreiben bzw. zu kopieren, oder?
Über Ideen und Vorschläge würde ich mich sehr freuen!