我想为查询提供表名作为命令参数,如下所示:
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 查询的字符串连接总是让我毛骨悚然......
谢谢,埃里克