alterneuersack
Goto Top

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?

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.

Content-Key: 72522897712

Url: https://administrator.de/contentid/72522897712

Printed on: April 27, 2024 at 08:04 o'clock

Member: Crusher79
Crusher79 Sep 24, 2023 updated at 20:58:36 (UTC)
Goto Top
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 ...
Member: Crusher79
Crusher79 Sep 24, 2023 at 21:15:50 (UTC)
Goto Top
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.
Member: AlterNeuerSack
Solution AlterNeuerSack Sep 24, 2023 at 21:39:36 (UTC)
Goto Top
Ich habe es hin bekommen.

 var @datumaktuel = year.ToString("MM.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;

Ja so eine kleinigkeit und solche Auswirkung.