Ich verwende MySQL Connector/Net und möchte eine Abfrage für eine Tabelle schreiben, deren Name zur Laufzeit angegeben wird.
Dieses Beispiel ist mir spontan eingefallen (nicht getestet):
public class DataAccess
{
public enum LookupTable
{
Table1,
Table2,
Table3
}
public int GetLookupTableRowCount(LookupTable table)
{
string tableName = string.Empty;
switch (table)
{
case LookupTable.Table1:
tableName = "table_1";
break;
case LookupTable.Table2:
tableName = "table_2";
break;
case LookupTable.Table3:
tableName = "table_3";
break;
default:
throw new ApplicationException("Invalid lookup table specified.");
}
string commandText = string.Concat("SELECT COUNT(*) FROM ", tableName);
// Query gets executed and function returns a value here...
}
}
Da ich nicht glaube, dass man einen Tabellennamen in einer Abfrage parametrisieren kann, habe ich ein Enum statt einer Zeichenkette im Funktionsparameter verwendet, um die Möglichkeit von SQL-Einschleusung .
Hältst du das für einen guten Ansatz? Gibt es einen besseren Weg?