MySQL Tabellenname als Parameter

Ich versuche einzurichten, dass der Tabellenname als Parameter an den Befehlstext übergeben wird, aber es funktioniert nicht. Ich habe mich ein bisschen umgesehen und Fragen wie diese gefunden:Parameterized Query für MySQL mit C #, aber ich hatte kein Glück.

Dies ist der relevante Code (connection == theMySqlConnection mit der Verbindungszeichenfolge):

public static DataSet getData(string table)
{
    DataSet returnValue = new DataSet();
    try
    {
        MySqlCommand cmd = connection.CreateCommand();
        cmd.Parameters.AddWithValue("@param1", table);
        cmd.CommandText = "SELECT * FROM @param1";

        connection.Open();

        MySqlDataAdapter adap = new MySqlDataAdapter(cmd);
        adap.Fill(returnValue);
    }
    catch (Exception)
    {   
    }
    finally
    {
        if (connection.State == ConnectionState.Open)
            connection.Close();
    }
    return returnValue;
}

Wenn ich ändere:

cmd.CommandText = "SELECT * FROM @param1";

zu

cmd.CommandText = "SELECT * FROM " + table;

Als eine Möglichkeit zum Testen, und das funktioniert (ich schreibe die XML aus dem Datensatz in die Konsole, um sie zu überprüfen). Ich bin mir also ziemlich sicher, dass das Problem darin besteht, die Parameterfunktionalität falsch zu verwenden. Irgendwelche Hinweise?

Auch korrigieren Sie mich, wenn ich mich irre, aber die Verwendung der Parameter-Funktionalität sollte einen vollständigen Schutz gegen SQL-Injection bieten, oder?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage