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
Wert aus Bedingung außerhalb verfügbar
qiwi
myCSharp.de - Member



Dabei seit:
Beiträge: 7

Themenstarter:

Wert aus Bedingung außerhalb verfügbar

beantworten | zitieren | melden

Hallo zusammen,

ich sehe wahrscheinlich den Wald vor lauter Bäumen nicht mehr.
Ich muss einige Variablen in if-Abfragen füllen und diese später
in eine SQL-Datenbank schreiben.

Nun stehe ich wie der Ochs vorm Berg und komme nicht weiter.

Da ich nicht in jeder if-Abfrage einen INSERT INTO...... Befehl schreiben möchte, dies auch etwas strange wäre - ist
meine Frage - wie kann ich das anders machen?

Beispiel

if(x=1)
{
string wert1 = Hallo;
}
if(y=2)
{
string wert2 = NochEinText;
}


SQLAbfrage()
{
INSERT INTO BLABLA (feld1,feld2)
VALUES (wert1,wert2)
}

Ich kann ja leider nicht auf die lokalen Variablen zugreifen. Wie kann ich es trotzdem oder welchen Weg muss ich nehmen, damit ich mein Vorhaben umsetzen kann?

Danke
private Nachricht | Beiträge des Benutzers
JimStark
myCSharp.de - Member

Avatar #dOpLzh7hN1az1g0eGRc0.jpg


Dabei seit:
Beiträge: 297

beantworten | zitieren | melden

Wie führst du die Sql-Abfrage denn aus?
[Artikelserie] SQL: Parameter von Befehlen
private Nachricht | Beiträge des Benutzers
chilic
myCSharp.de - Experte



Dabei seit:
Beiträge: 2143

beantworten | zitieren | melden

Die Variablen müssen in diesem Fall eben global gemacht werden. Oder es wird eine Methode für das SQL erstellt, in die man die Variablen als Parameter übergibt.
Wie das SQL ausgeführt wird ist für die eigentliche Frage nicht entscheidend. Wohl aber für den nächsten Schritt, nämlich dass man eine saubere Abfrage bekommt.
private Nachricht | Beiträge des Benutzers
qiwi
myCSharp.de - Member



Dabei seit:
Beiträge: 7

Themenstarter:

beantworten | zitieren | melden

Vielen Dank Euch.
Ich hatte den Denkfehler, dass eine Variable, welche ich außerhalb eines Bereichs erstelle - zwar innen deklariert werden kann - aber dann weiter unten (Hinter dem Rumpf der z.B. If-Abfrage) dann immer noch nur den Initialisierungszustand hat.
Ok - das ergibt nun langsamm Sinn. Gültigkeitsbereiche. Eine Initialisierung innerhalb der Klasse ist dann auch innerhalb der ganzen Klasse möglich. Auch innerhalb der Abfrage.
Also kann ich auch eine am Anfang in der Klasse erstellte Variable - innerhalb eines beliebigen Rumpfes mit einem Wert füllen und diesen dann egal wo (Am Ende der Klasse) benutzen.

Nun werde ich meine ganzen Werte, welche ich für die Datenbank benötige - am Anfang der Klasse erstellen und mit den einzelnen Bedingungen füllen und danach in einem
SQL Statement in die Datenbank einfügen.
Wie das aussehen soll, das habe ich in meiner Frage schon etwas Pseudocodemäßig dargestellt.
Einfach eine INSERT-Anweisung schreiben.
Oder was habt Ihr damit gemeint? Es sind übrigens zwei Tabellen - also muss ich mir da noch einfallen lassen, wie alle Daten in die richtigen Tabellen kommen.
Aber das ist ein anderes Thema - ich danke Euch auf jeden Fall einmal mich von der Leitung herunter geschubst zu haben.

Grüße
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16224

beantworten | zitieren | melden

Zitat von qiwi
Vielen Dank Euch.
Ich hatte den Denkfehler, dass eine Variable, welche ich außerhalb eines Bereichs erstelle - zwar innen deklariert werden kann - aber dann weiter unten (Hinter dem Rumpf der z.B. If-Abfrage) dann immer noch nur den Initialisierungszustand hat.
Nein, das stimmt nicht.


string aa = null;
{
   aa = "abc"
   string bb = "xyz"
}
// hier ist aa = abc und nicht null.
// aber bb ist hier unbekannt
Scopes haben keinen Einfluss auf einzelne Speicherbereiche.
Zitat von qiwi
innerhalb eines beliebigen Rumpfes mit einem Wert füllen und diesen dann egal wo (Am Ende der Klasse) benutzen.
Nein, das kommt drauf an.
Auch Scopes haben Regeln.

Befass Dich am besten mit den Grundlagen, denn ohne das wirst Du keinen C# Code produzieren können.
Basic concepts
Ein mal durch lesen und 30% merken, dann ist das schon ein Gewinn.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers