Entwickler-Ecke

Basistechnologien - Auswahl aus LisBox erkennen und auf Datenbank übertragen


garv3 - Do 27.08.09 01:00
Titel: Auswahl aus LisBox erkennen und auf Datenbank übertragen
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:

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 - 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 - 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!!!