Autor Beitrag
garv3
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Do 27.08.09 01:00 
Hallo zusammen!
Ich habe eine Listbox, welche ich mit Items aus einer Datenbank fülle.
Nun möchte ich, wenn jemand auf einen Eintrag klickt, herausfinden, dass dies geschehen ist und zu welchem Datenbankeintrag dieser gehört.
Hier ein Codeausschnitt, in dem ich die Liste fülle:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
            SplitListe.Items.Clear();
            oeffne_db();
            sql_cmd = new SqlCeCommand("SELECT * FROM Buchungen WHERE Kellner = "+kellner_nummer+" ORDER BY Zeit DESC", sql_con);
            SqlCeDataReader sql_result = sql_cmd.ExecuteReader();
            while (sql_result.Read())
            {
                SplitListe.Items.Add(sql_result["Artikel"]);
            }
            schliesse_db();

Wie kann ich denn nun, wenn einer daraufklickt, herausfinden, zu Welcher Zeile in der Datenbanktabelle der Eintrag gehört?

Dank und Gruß!
garv3
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Do 27.08.09 09:15 
Hallo,

du musst dein gesamtes Vorgehen überdenken: Ein "vernünftiges" Arbeiten mit Datenbanken trennt die Datenmenge auf der Festplatte von der Datenmenge im Arbeitsspeicher und der Anzeige/Bearbeitung in der GUI. Du überspringst die Datenmenge im Arbeitsspeicher und füllst die ListBox direkt. Das entspricht nicht der Konstruktion von ADO.NET und führt (wie zu sehen ist) früher oder später zu Problemen.

Vorschlag: Benutze für die Daten eine DataTable, für die Verknüpfung mit der Datenbank jeweils DbDataAdapter und für die Anbindung an die GUI die Eigenschaft DataSource.

Ich wiederhole außerdem dringendst meine Empfehlung: Benutze DbCommand.Parameters!

Jürgen
garv3 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Do 27.08.09 23:15 
Ja, mir ist klar, was du meinst. Allerdings eilt das Projekt sehr! Ich habe gerade erst mit C# angefangen und muss die Anwendung nun ersteinmal "irgendwie" zum Laufen bringen. Daher hab ich gerade keine Zeit, mich in tiefer in ADO.net einzuarbeiten.
Wenn sie dann einmal fertig ist, kann ich mich noch mit den "Feinheiten" und der Qualitätssicherung beschäftigen.
Aber ich denke, ich hab schon nen Weg gefunden.

Danke erstmal!!!