Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - zwei mal BETWEEN geht irgend wie nicht...


tomycat - Mo 02.11.15 22:15
Titel: zwei mal BETWEEN geht irgend wie nicht...
Hallo,
ich möchte gerne zwei mal BETWEEN nehmen....

C#-Quelltext
1:
2:
3:
4:
5:
s = "select * from artikel.rechnunginhalt WHERE datum BETWEEN " + int.Parse(textBox2.Text) + " AND " + int.Parse(textBox3.Text);

s += " AND geld BETWEEN 1 AND 100";

s += ";";


2.Frage: geld ist varchar(25) in meiner mysql.

C#-Quelltext
1:
2:
3:
4:
5:
6:
s = "select * from artikel.rechnunginhalt WHERE datum BETWEEN " + int.Parse(textBox2.Text) + " AND " + int.Parse(textBox3.Text);

s += " AND geld = ";
s += textBox5.Text; // 1,19 geht nicht !!!

s += ";";

Es kommt 19 geht nicht

Moderiert von user profile iconTh69: Code- durch C#-Tags ersetzt


Ralf Jansen - Mo 02.11.15 22:36

1.) Wenn möglich immer Parameter [http://openbook.rheinwerk-verlag.de/visual_csharp_2012/1997_32_005.html] verwenden. Kein String konkatenieren wie du es machst. Das nimmt dir das saubere Formatieren der Werte ab. (Dezimalzahlen mit Punkt oder Komma?, Welches Format braucht man für ein Datum? etc.)

2.) Wenn Geld ein varchar ist dann gehören da Quotes um den Text sonst kann die Datenbank den Text nicht von einem Spaltennamen unterscheiden. Auch das Problem würde nicht existieren wenn du Parameter verwendest. Dann ist klar das ein Wert gemeint ist und kein Spaltenname.


tomycat - Mo 02.11.15 22:46

ok,
zu Frage 1,(ohne Komma/Punkt)

Ziel:

Zeilennummer 1 bis 30 und Geld 20 bis 30

zu Frage 2, Ich nutze Komma und es geht um einen Geldbetrag.

Wie meinst du das mit Parameter?


Ralf Jansen - Mo 02.11.15 22:51

Zitat:
Zeilennummer 1 bis 30 und Geld 20 bis 30


Das sollte so funktionieren können wie du es zeigst. Möglicherweise möchte mysql hier zwingend Klammern für den "Feld between value1 and value2" Ausdruck.
Aber du hast es doch bestimmt ausprobiert oder?

Zitat:
Wie meinst du das mit Parameter?


Klick auf den Link im Beitrag.