我想将表名作为命令参数提供给查询,如下所示:
public class Foo
{
private const String myTableName = "mytable";
public void Bar()
{
NpgsqlCommand command = new NpgsqlCommand("SELECT * from :tableName", connection);
command.Parameters.Add(new NpgsqlParameter("tableName", DbType.String));
command.Parameters[0].Value = myTableName;
}
}
这似乎会导致这个查询:
"SELECT * from E'mytable'"
,结果会出现错误(请注意单引号)。我真的需要为此进行字符串拼接吗?从安全角度来看并不重要,因为用户无法更改表名,但是创建SQL查询时进行字符串拼接总是让我感到不安...
谢谢, Eric