Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

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



Dabei seit:
Beiträge: 2

Themenstarter:

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

beantworten | zitieren | melden

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.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Marcel99 am .
Attachments

Moderationshinweis von Abt (07.01.2022 - 14:26)

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

private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.505

beantworten | zitieren | melden

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 :-)
private Nachricht | Beiträge des Benutzers
Stefan.Haegele
myCSharp.de - Member

Avatar #avatar-3068.jpg


Dabei seit:
Beiträge: 450
Herkunft: Untermeitingen

beantworten | zitieren | melden

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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Stefan.Haegele am .
private Nachricht | Beiträge des Benutzers
thomas.at
myCSharp.de - Member



Dabei seit:
Beiträge: 102
Herkunft: Österreich / Wien

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.505

beantworten | zitieren | melden

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).
private Nachricht | Beiträge des Benutzers
thomas.at
myCSharp.de - Member



Dabei seit:
Beiträge: 102
Herkunft: Österreich / Wien

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers