我正在使用 MySQL 连接器/网络,我想针对将在运行时指定名称的表编写查询。
这个例子不在我的脑海中(未经测试):
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 注入的可能性。
这看起来是个好方法吗?有没有更好的办法?