MySql Variable in WHERE Klausel funktioniert nicht
Hallo Leute,
ich bekomme es nicht hin das ich in der WHERE Anweisung eine Variable zu verwenden.
Mir wird leider kein Ergebnis ausgegeben.
Syntax Fehler in der Nähe von %%.%%.2023 sagt er mir.
Ich muss dazu sagen Datum ist als Typ Text in der Datenbank abgelegt, im Format 01.08.2023 zB.
Der Wert in der Variablen ist korrekt.
Was mach ich da falsch?
Ich hoffe Ihr könnt mir auf die Sprünge helfen.
ich bekomme es nicht hin das ich in der WHERE Anweisung eine Variable zu verwenden.
Mir wird leider kein Ergebnis ausgegeben.
Syntax Fehler in der Nähe von %%.%%.2023 sagt er mir.
Ich muss dazu sagen Datum ist als Typ Text in der Datenbank abgelegt, im Format 01.08.2023 zB.
Der Wert in der Variablen ist korrekt.
Was mach ich da falsch?
private void btnAktuell_Click(object sender, RoutedEventArgs e)
{
string connectionString;
MySql.Data.MySqlClient.MySqlConnection connection;
connectionString = @"server=localhost;port=3306;user id=root;password=;database=ddt";
try
{
connection = new MySql.Data.MySqlClient.MySqlConnection(connectionString);
connection.Open();
DateTime year= DateTime.Now;
var @datumaktuel = "%%.%%." + year.ToString("yyyy");
aktuelles.Text = @datumaktuel;
MySqlCommand command = new MySqlCommand("SELECT SUM(Summe) AS Gesamt_Summe FROM Finanzen WHERE Ein_Aus = 1 AND Datum LIKE " + @datumaktuel, connection);
MySqlDataReader reader = null;
reader = command.ExecuteReader();
string s = "";
while (reader.Read())
{
s = s + reader["Gesamt_Summe"].ToString();
}
txtcontent4.Text = s;
connection.Close();
}
catch (Exception)
{
throw;
}
}
Ich hoffe Ihr könnt mir auf die Sprünge helfen.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 72522897712
Url: https://administrator.de/contentid/72522897712
Ausgedruckt am: 25.11.2024 um 02:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo,
nutze doch einfach Stringbuilder. Kannst auch Parameter mit übergeben etc. Den String aufbereiten lassen und Commando ausführen.
Du kannst den String in deinen Fall auch vorher zusammen bauen und dann die Variable dort hinterlegen. Für größere Sachen ist SB meist übersichtlicher.
MS SQL nur als Beispiel.
https://stackoverflow.com/questions/71129780/sql-query-with-string-build ...
In deinen Fall versuchst du Datum in eine Skalarvariable zu packen. C# Variablen sind aber anders aufgabaut .... Concat o.ä. geht nur, wenn C# es auch als VAR erkennt und umsetzen kann.
Trifft bei dir aber noch weniger zu. Es hängt quasi in der Luft und wird nicht übergeben.
Da ein Bsp. für etwas was unter C# deklariert und an "SQL übergeben" wird.
https://stackoverflow.com/questions/7080589/c-sharp-variable-into-sql-co ...
nutze doch einfach Stringbuilder. Kannst auch Parameter mit übergeben etc. Den String aufbereiten lassen und Commando ausführen.
Du kannst den String in deinen Fall auch vorher zusammen bauen und dann die Variable dort hinterlegen. Für größere Sachen ist SB meist übersichtlicher.
MS SQL nur als Beispiel.
https://stackoverflow.com/questions/71129780/sql-query-with-string-build ...
In deinen Fall versuchst du Datum in eine Skalarvariable zu packen. C# Variablen sind aber anders aufgabaut .... Concat o.ä. geht nur, wenn C# es auch als VAR erkennt und umsetzen kann.
Trifft bei dir aber noch weniger zu. Es hängt quasi in der Luft und wird nicht übergeben.
Da ein Bsp. für etwas was unter C# deklariert und an "SQL übergeben" wird.
https://stackoverflow.com/questions/7080589/c-sharp-variable-into-sql-co ...
PS: bin bei MySQL etwas eingerostet.
Für MS-SQL nutzte ich gerrne eine quasi "werfreies" Format: YYYYMMDD
Egal welche Länderspezifikationen. Ohne Punkte wurde es sofort korrekt interpretiert.
Bin gerade am überlegen, ob es bei MySQL auch so ist. Dann hat man es deutlich leichter, wenn es mal auf einen anderen SQL Server laufen soll.
Für MS-SQL nutzte ich gerrne eine quasi "werfreies" Format: YYYYMMDD
Egal welche Länderspezifikationen. Ohne Punkte wurde es sofort korrekt interpretiert.
Bin gerade am überlegen, ob es bei MySQL auch so ist. Dann hat man es deutlich leichter, wenn es mal auf einen anderen SQL Server laufen soll.