Я использую MySQL Connector/Net, и я хочу написать запрос к таблице, имя которой будет указано во время выполнения.Как выбрать динамическое имя таблицы во время выполнения?
Этот пример с верхней части моей головы (не тестировался):
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...
}
}
Так как я не думаю, что вы можете параметризовать имя таблицы в запросе, я использовал перечисление, а не строки в параметр функции для ограничения возможности SQL injection.
Это похоже на хороший подход? Есть ли способ лучше?
Does .net не поддерживает добавление дополнительных свойств в тип перечисления? – Jherico
Вы имеете в виду Table1 = "table_1" и т. Д. Если это так, то вы можете использовать только такие интегральные типы, как int и long. –