Laden...

SQL, C#: Wie fragt man nach dem Inhalt einer ComboBox wenn die 2 Werte eine Tabelle beinhaltet.

Erstellt von Marcel99 vor 2 Jahren Letzter Beitrag vor 2 Jahren 551 Views
M
Marcel99 Themenstarter:in
2 Beiträge seit 2021
vor 2 Jahren
SQL, C#: Wie fragt man nach dem Inhalt einer ComboBox wenn die 2 Werte eine Tabelle beinhaltet.

Hallo myCSharp Nutzer,
ich wollte ein form erstellen, in dem man mit Hilfe von einer ComboBox Name und Nachname, aus einer Tabelle, einer Person auswählen kann. Mit dem Inhalt der ComboBox soll vergliechen werden welche Zeile in der Tabelle die gleichen Werte hat und es soll die ID der Person in einer TextBox ausgegeben werden.

Was ich bis jetzt gemacht habe:

Tabelle erstellt:


CREATE TABLE [dbo].[Kunden] (
    [Kunden_ID] NVARCHAR (50) NOT NULL,
    [Vorname]   NVARCHAR (50) NULL,
    [Nachname]  NVARCHAR (50) NULL

Code um die 2 Werte Name und Nachname in der ComboBox auswählen zu können:


            SqlCommand com = new SqlCommand("select * from Kunden", con);
            con.Open();
            SqlDataAdapter da = new SqlDataAdapter(com);
            DataSet ds = new DataSet();
            da.Fill(ds);
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                comboBox1.Items.Add(ds.Tables[0].Rows[i][1] + " " + ds.Tables[0].Rows[i][2]);
            }
            con.Close();

Code um die Tabelle mit den Inhalt der Combobox zu vergleichen:


SqlCommand cmd = new SqlCommand("select * from Kunden where Vorname AND ='" + comboBox1.Text + "'and Nachname='" + comboBox1.Text + "'", con);
            con.Open();
            cmd.ExecuteNonQuery();
            SqlDataReader dr;
            dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                string id = (string)dr["Kunden_ID"].ToString();
                kunden_id_txtbox.Text = id;
            }
            con.Close();

(die select abfrage oder etwas anderes irgendwas anderes ist natürlich falsch)

Mein Form wird angehängt.
Bei der ComboBox kann man den vollen Namen eines Kunden auswählen.

Hinweis von Abt vor 2 Jahren

Bitte das nächste Mal im richtigen Forenbereich posten.
[Hinweis] Wie poste ich richtig?

16.834 Beiträge seit 2008
vor 2 Jahren

Siehe [Artikelserie] SQL: Parameter von Befehlen
Dein Code ist so SQL-Injection anfällig.

Ansonsten sehe ich keine direkte Frage.
Wenn es Dir um den SQL Aufbau geht, dann mach einfach nen Tutorial, um die Grundlagen zu erlernen: SQL Tutorial
Aber das Forum ist leider kein Quellcode-Generator 🙂

463 Beiträge seit 2009
vor 2 Jahren

Also mir sträuben sich bei


SELECT * FROM.. 

immer alle Haare. Eine kleine Änderung / Anpasung an der Tabelle und nichts passt mehr. Und wie Abt schon schrieb ist die Erzeugung des SQL Befehls alles andere als clever - ich bezeichne es sogar als fahrlässig. Erarbeite dir bitte die Grundlagen - du wirst ansonsten nicht glücklich werden.

T
111 Beiträge seit 2005
vor 2 Jahren

Hallo

Was Dir bis jetzt noch keiner gesagt hat: setze beim Vergleich nach dem Select-Command mal einen Breakpoint und schau Dir im Debugger Deinen Command an. Dann wirst Du den Fehler selbst bemerken.

Thomas

16.834 Beiträge seit 2008
vor 2 Jahren

Der Fehler passiert nicht, wenn man direkt Parameter nutzt 🙂
Der Debugger hilft höchsten beim fehlenden Leerzeichen; nicht aber beim Grundproblem (SQL Injection und Typsicherheit).

T
111 Beiträge seit 2005
vor 2 Jahren

Hallo

Der Fehler würde auch mit SQL-Parameter passieren (beachte die Werte in der Combobox). So wie es jetzt aufgebaut ist, bekommt der TE nie Werte aus der DB.

Thomas