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

  • »
  • Community
  • |
  • Diskussionsforum
Variable an sql query in c# übergeben.
Nico1234xdlolhahha
myCSharp.de - Member



Dabei seit:
Beiträge: 1

Themenstarter:

Variable an sql query in c# übergeben.

beantworten | zitieren | melden

Ich habe hier im Code ganz oben meine Variable KNR die jedesmal eingelesen wird bei Aufruf. Diese KNR Variable soll jetzt an das SQL Statement übergeben werden, also der inhalt, es klappt einfach nicht. habe es mit diesem @KNR Versucht tut aber nicht. weiß nicht mal genau was das @KNR am Ende genau macht. Wenn ich in einfachen Anführungszeichen beim WHERE direkt eine Nummer reinschreibe tut es ja aber bekomme einfach nicht den Inhalt der Variable übergeben.


public void LoadData(string WNR)
        {
            lbl_knr.Text = KNR;            
            const string sqlTemplate = "SELECT KUNDENAUFTRAGSNR  FROM MESSFELD.AUSSTANDSDATEN WHERE FTNR='@KNR'";        //SQL Query, search for WNR
            
            using (SqlConnection conn = new SqlConnection(SqlConnString))
            {
                using (SqlCommand cmd = new SqlCommand(SqlCmdText, conn))
                {
                    cmd.CommandType = CommandType.Text;
                    cmd.Parameters.AddWithValue("@KNR", KNR);
                    
                    string sql = string.Format(sqlTemplate);
                    Database cdb = new Database();
                    //try to connect and cancel on error
                    if (!cdb.Open("MESSFELD", "BIRNE$2000"))
                    {
                        SetStatusText("Datenbank ist nicht verfügbar.");
                        return;
                    }
                    lbl_wnmr.Text = cdb.LoadSql(sql);                           // Write loaded WNR to lable
                    cdb.Close();
                }
            }
        }
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.851

beantworten | zitieren | melden

Leider wird hier niemand mit "Es klappt nicht" erkennen können, was und warum etwas nicht geht.
Aber in [Artikelserie] SQL: Parameter von Befehlen sind die Parameter und die Funktionsweisen erklärt.

Der Query besonders in diesem Fall, mit Sonderzeichen in Resourcennamen, mit Klammern versehen sein; Hochkomma bei Parametern weglassen.

SELECT [KUNDENAUFTRAGSNR] FROM [MESSFELD.AUSSTANDSDATEN] WHERE [FTNR] = @KNR;

Dein Code darüber hinaus verwendet als SQL Command Parameter die Variable SqlCmdText, Du zeigst hier aber nur den Query in der Variable sqlTemplate.
Das heisst Dein SQL Befehl läuft hier nicht mit dem Query, den wir hier sehen.

Der Code hier ist ohnehin vollständig, nunja, "verbesserungswürdig" - inhaltlich wie auch aus Übersichtsgründen.
Die SQL Parameter funktionieren nur mit SqlCommand.


public void LoadData(string kundenNummer)
        {
            string sqlTemplate = "SELECT [KUNDENAUFTRAGSNR] FROM [MESSFELD.AUSSTANDSDATEN] WHERE [FTNR] = @KNR;"

            using (SqlConnection conn = new SqlConnection(SqlConnString))
            using (SqlCommand cmd = new SqlCommand(sqlTemplate, conn))
            {
                cmd.Parameters.AddWithValue("@KNR", kundenNummer);

                SqlDataReader reader = command.ExecuteReader();
                while (reader.Read())
                {
                   // Ergebnisse hier
                   Console.WriteLine(String.Format("{0}", reader[0]));
                }
            }
        }
Siehe auch Doku https://docs.microsoft.com/de-de/dotnet/api/system.data.sqlclient.sqlcommand.executereader?view=dotnet-plat-ext-6.0

Und nimm Dir auch [Artikel] Drei-Schichten-Architektur zu herzen und lass es besser sein, Quellcode derart zu vermischen.
Glaube da hast mittlerweile auch die Übersicht verloren, sonst wäre Dir die Rekursion aufgefallen.
private Nachricht | Beiträge des Benutzers