Laden...

Wert aus Bedingung außerhalb verfügbar

Erstellt von qiwi vor 2 Jahren Letzter Beitrag vor 2 Jahren 437 Views
Q
qiwi Themenstarter:in
7 Beiträge seit 2021
vor 2 Jahren
Wert aus Bedingung außerhalb verfügbar

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

309 Beiträge seit 2020
vor 2 Jahren

Wie führst du die Sql-Abfrage denn aus?
[Artikelserie] SQL: Parameter von Befehlen

C
2.121 Beiträge seit 2010
vor 2 Jahren

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.

Q
qiwi Themenstarter:in
7 Beiträge seit 2021
vor 2 Jahren

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

16.806 Beiträge seit 2008
vor 2 Jahren

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.

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.